📄 键盘与显示.txt
字号:
键盘与显示
ORG 0000H
AJMP MAIN
MAIN: MOV DPTR,#8001H ;7424列清0
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8002H ;74374行清0
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8002H ;74374段选清0
MOV A,#00H
MOVX @DPTR,A
MOV R3,#00H
MOV R4,#00H
MOV R2,#11011111B ;R2列扫描字
KEY0: ACALL KEXAM
JZ KEY0
ACALL DL10mS
ACALL KEXAM
JZ KEY0
KEY1: MOV DPTR,#8002H ;列地址
MOV A,R2
MOVX @DPTR,A
MOV DPTR, #8001H ;行地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
JNZ KEY2 ;有健按下,求行值
KEY11: MOV A,R3
ADD A,#04H ;无健按下,行加4
MOV R3,A
MOV A,R2 ;扫描下一列
RR A
MOV R2,A
JB ACC.0,KEY1 ;判断是否扫描完4列?
AJMP MAIN
KEY2: CPL A ;计算行值
KEY3: INC R4
RRC A
JC KEY3
KEY4: ACALL DL10mS
ACALL KEXAM ;等待健释放
JNZ KEY4
MOV A,R4
ADD A,R3 ;计算健值
MOV 30H,A ;保存健值
KEY5: ACALL DISPLAY
ACALL DL10mS
ACALL KEXAM
JZ KEY5 ;无健按下继续显示
ACALL DL10mS
ACALL KEXAM
JZ KEY5
AJMP KEY11
DL10mS: MOV R5,#08H ;按键延时子程序
DL: MOV R6,#0FFH
DL0: DJNZ R6,DL0
DJNZ R5,DL
RET
KEXAM: MOV DPTR,#8002H ; 列地址
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#8001H ; 行地址
MOVX A,@DPTR
CPL A
ANL A,#0FH
RET
DISPLAY: MOV DPTR,#TAB
MOV A,30H
MOVC A,@A+DPTR
MOV DPTR,#8004H
MOVX @DPTR,A
MOV DPTR,#8002H ; 位选
MOV A,#20H
MOVX @DPTR,A
RET
TAB: ;DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,
;DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H,
DB 0FFH,3FH,06H,66H,07H,71H,5BH,6DH,7FH,
DB 79H,4FH,7DH,6FH,5EH,39H,7CH,77H,
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -