📄 矩阵键盘.asm
字号:
ORG 0000H
START:MOV P0,#00H
MOV DPTR,#TAB ;1.进行初始化
DONE:MOV P2,#0F0H ;2.先将行键作为输入,找出键码
MOV A,P2
CJNE A,#0F0H,NEXT
AJMP DONE
NEXT:ACALL DELAY ;3.有键按下的情况下,先要进行消除抖动操作
MOV P2,#0F0H
MOV A,P2
CJNE A,#0F0H,NEXT1
AJMP DONE
NEXT1:MOV 20H,A ;行键保存在20H
MOV P2,#0FH
MOV A,P2
MOV 21H,A ;列键保存在21H
NEXT2:MOV P2,#0F0H
MOV A,P2
CJNE A,#0F0H,NEXT2 ;4.判断键是否松开?
MOV A,20H
JNB ACC.4,LP1 ;第一行
JNB ACC.5,LP2 ;第二行
JNB ACC.6,LP3 ;第三行
JNB ACC.7,LP4 ;第四行
AJMP DONE
LP1:MOV 22H,#0 ;5.将键码保存在22H
AJMP LAST
LP2:MOV 22H,#4
AJMP LAST
LP3:MOV 22H,#8
AJMP LAST
LP4:MOV 22H,#12
AJMP LAST
LAST:MOV A,21H
JNB ACC.0,LD1 ;第一列
JNB ACC.1,LD2 ;第二列
JNB ACC.2,LD3 ;第三列
JNB ACC.3,LD4 ;第四列
AJMP DONE
LD1:MOV A,#0
ADD A,22H
MOVC A,@A+DPTR
MOV P0,A
AJMP DONE
LD2:MOV A,#1
ADD A,22H
MOVC A,@A+DPTR
MOV P0,A
AJMP DONE
LD3:MOV A,#2
ADD A,22H
MOVC A,@A+DPTR
MOV P0,A
AJMP DONE
LD4:MOV A,#3
ADD A,22H
MOVC A,@A+DPTR
MOV P0,A
AJMP DONE
DELAY:MOV R7,#50
DELAY1:MOV R6,#100
DJNZ R6,$
DJNZ R7,DELAY1
RET
TAB:DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 099H;4
DB 092H;5
DB 082H;6
DB 0F8H;7
DB 080H;8
DB 090H;9
DB 088H;A
DB 083H;b
DB 0C6H;C
DB 0A1H;d
DB 086H;E
DB 08EH;F
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -