📄 4x4键盘.asm
字号:
ORG 0000H
LJMP SMKEY
ORG 0020H
MAIN:
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 40H,#10
LCALL DISP
;**********检查是否有按键按下**********
SMKEY:LCALL DISP
MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KEY
SJMP SMKEY
;**********消除抖动**************
KEY:LCALL DL0
MOV A,P1
ANL A,#0FH
MOV B,A
CJNE A,#0FH,KEY1
SJMP SMKEY
;********确定哪个键按下**********
KEY1:MOV P1,#0F0H
MOV A,P1
ANL A,#0F0H
ORL A,B
LOOP:CJNE A,#7EH,LOOP1
MOV 30H,#4
MOV 31H,#8
MOV 32H,#9
LCALL DISP
LJMP SMKEY
LOOP1:CJNE A,#7DH,LOOP2
MOV 30H,#5
MOV 31H,#8
MOV 32H,#9
LCALL DISP
LJMP SMKEY
LOOP2:CJNE A,#7BH,LOOP3
MOV 30H,#6
MOV 31H,#8
MOV 32H,#9
LCALL DISP
LJMP SMKEY
LOOP3:CJNE A,#77H,SMKEY
MOV 30H,#7
MOV 31H,#8
MOV 32H,#9
LCALL DISP
LJMP SMKEY
DISP:MOV DPTR,#TABLE
MOV A,30H
MOVC A,@A+DPTR
MOV DPTR,#0EFFFH
MOVX @DPTR,A
CLR P2.3
LCALL DEL
SETB P2.3
MOV A,31H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#0EFFFH
MOVX @DPTR,A
CLR P2.2
LCALL DEL
SETB P2.2
MOV A,32H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DPTR,#0EFFFH
MOVX @DPTR,A
CLR P2.1
LCALL DEL
SETB P2.1
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0C6H
;1毫秒延时程序
DL0: MOV R6,#14H
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
DEL:MOV R6,#10
DD2:MOV R7,#50
DD1:DJNZ R7,DD1
DJNZ R6,DD2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -