2020-03-02 07:52:58 来源:范文大全收藏下载本文
paequ 8002h
pbequ 8004h
pccequ 8001h
ORG0000HLJMP STARTORG 001BHLJMP INT
START:MOV R0,#71HMOV R1,#06H
CLEAR:MOV @R0,#00HINC R0
DEC R1
DJNZ R1,CLEARMOV 6DH,#00MOV 6CH,#00MOV 7DH,#00ACALL MIAOMOV 7EH,#00ACALL FENMOV 7FH,#00ACALL XIAOSHIINI8255:MOV DPTR ,#8003HMOV A,#81H
MOVX @DPTR,AINIT1:MOV TMOD ,#20HMOV TL1, #06HMOV TH1,#06HSETB TR1SETB ET1SETB EA
LOOP1: LCALL DISPLAYLCALL YMYJZLOOP1MOV R1,#70H
LCALL DDCJNE A ,#0FH,LOOP1CLRTR1
LOOP2:LCALL DIR
LCALL YMYJZLOOP2;清零 ;8255初始化;T1初始化 ;判断有无键按下 ;判断到底哪个键按下;判断有无键按下
LCALL DD;判断到底哪个键按下,并写进存储单元CJNE R1,#77H,LOOP;最后一位有没有输入完
SETBTR1
LCALL ZH
LJMPLOOP1
LOOP:LJMPLOOP2
INT:PUSH ACC;中断子程序
PUSH PSW
INC 6DH
MOV A,6DH
JNZ BJ
INC 6CH
BJ:MOV A,#0A0H
CJNE A,6DH,RETURN
MOV A,#0FH
CJNE A,6CH,RETURN
MOV 6DH,#00H
MOV 6CH,#00H
MOV A,#01H
ADD A,7DH
MOV 7DH,A
ACALL MIAO
MOV A,7DH
CJNE A,#60,RETURN
MOV 7DH,#0
ACALLMIAO
INC7EH
ACALL FEN
MOV A,7EH
CJNE A,#60,RETURN
MOV7EH,#00H
ACALL FEN
INC 7FH
ACALL XIAOSHI
MOV A,7FH
CJNE A,#24,RETURN
MOV 7FH,#00H
ACALL XIAOSHI
RETURN: POP PSW
POP ACC
RETI
MIAO: MOV A,7DH
DIV AB
MOV 75H, A
MOV 76H,B
RET
FEN:MOV A,7EH
MOV B,#10
DIV AB
MOV 73H,A
MOV 74H,B
RET
XIAOSHI: MOV A,7FH
MOV B,#10
DIV AB
MOV 71H,A
MOV 72H,B
RET
ZH:;输入值转换并送入相应存储单元
MOVA, 75H
MOVB,#10
MULAB
ADD A,76H
MOV7DH,A
MOVA, 73H
MOVB,#10
MULAB
ADD A,74H
MOV 7EH,A
MOVA, 71H
MOVB,#10
MULAB
ADD A,72H
MOV 7FH,A
RET
DISPLAY: MOVA,7DH;显示子程序
MOVB,#10
DIVAB
MOV75H,A
MOV76H,B
MOVA,7EH
DIVAB
MOV73H,A
MOV74H,B
MOVA,7FH
MOVB,#10
DIVAB
MOV71H,A
MOV72H,B
DIR:MOV R0,#76H
MOV R2,#01H
CLR C
DIR1:MOV A,R2
MOV DPTR,#pa
MOVX @DPTR,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR, #pb
MOVX @DPTR,A
ACALL DELAY
DEC R0
MOV A,R2
RL A
MOV R2,A
CJNE R0,#70H,DIR1
RET
TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
YMY:MOV DPTR,#pa;判断有无键按下子程序
MOV A,#00H
MOVX @DPTR ,A
INC DPTR
mov DPTR,#pcc
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DD:MOV R2,#0DFH;判断到底哪个键按下并送入相应单元子程序MOV R5,#4
MOV R4,#00H
LK4:MOV DPTR,#pa
MOV A,R2
MOVX @DPTR,A
INC DPTR
mov DPTR,#pcc
MOVX A,@DPTR
JB ACC.0,LINE1
MOV A,#00H
AJMP LKP
LINE1:JB ACC.1,LINE2
MOV A,#04H
AJMP LKP
LINE2:JB ACC.2,LINE3
MOV A,#08H
AJMP LKP
LINE3:JB ACC.3,NEXT
MOV A,#0CH
LKP:ADD A,R4
ACALL KEYIN
PUSH ACC
LK3:ACALL YMY
JNZ LK3
POP ACC
RET
NEXT:INC R4
MOV A,R2
RR A
MOV R2,A
DJNZ R5,LK4
KEND:RET
KEYIN:
MOVDPTR,#KEYTAB
MOVCA,@A+DPTR
MOV@R1,A
INCR1
RET
DELAY: MOV R7,#02H
DE:MOV R6,#0FFH
DJNZ R6, $
DJNZ R7,DE
RET
KEYTAB: DB 00H,0FH,0EH,0DH
DB 01H,02H,03H,0CH
DB 04H,05H,06H,0BH
DB 07H,08H,09H,0AH
END
;本程序用到的8255是这样接的:PA口接位选信号,也是列信号, ;PB口接七段数码管,PC口只用到其低四位,接行信号。
;通过改变8255的初始化,接法不固定。
;运行时,F键可设置时间值(先停后设置)
人人范文网 m.inrrp.com.cn 手机版