📄 keyscan.asm
字号:
ORG 0000H
SJMP 0030H
ORG 0030H
START: ACALL KEYPRG
NOP
SJMP START
ORG 0200H
KEYPRG: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,K1
AJMP NOKEY
K1: ACALL DL20
MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,K2
AJMP NOKEY
K2: MOV R7,#00H
MOV P1,#0EFH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KEYNO
K3: MOV R7,#04H
MOV P1,#0DFH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KEYNO
K4: MOV R7,#08H
MOV P1,#0BFH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KEYNO
K5: MOV R7,#0CH
MOV P1,#7FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KEYNO
SJMP NOKEY
KEYNO: JB ACC.0,N1
MOV A,#0
ADD A,R7
AJMP KEYAND
N1: JB ACC.1,N2
MOV A,#1
ADD A,R7
AJMP KEYAND
N2: JB ACC.2,N3
MOV A,#2
ADD A,R7
AJMP KEYAND
N3: MOV A,#3
ADD A,R7
AJMP KEYAND
NOKEY: MOV A,#0FFH
KEYAND: CPL A
JZ KEND
CPL A
RL A
MOV DPTR,#KEYGO
JMP @A+DPTR
KEYGO: AJMP KEY0
AJMP KEY1
AJMP KEY2
AJMP KEY3
AJMP KEY4
AJMP KEY5
AJMP KEY6
AJMP KEY7
AJMP KEY8
AJMP KEY9
AJMP KEY10
AJMP KEY11
AJMP KEY12
AJMP KEY13
AJMP KEY14
AJMP KEY15
KEND: NOP
RET
DL20: MOV R4,#250
DL1: MOV R5,#250
DJNZ R5,$
DJNZ R4,DL1
RET
KEY0: MOV P2,#40H
MOV P3,#0F0H
RET
KEY1: MOV P2,#79H
MOV P3,#0F0H
RET
KEY2: MOV P2,#24H
MOV P3,#0F0H
RET
KEY3: MOV P2,#30H
MOV P3,#0F0H
RET
KEY4: MOV P2,#19H
MOV P3,#0F0H
RET
KEY5: MOV P2,#12H
MOV P3,#0F0H
RET
KEY6: MOV P2,#02H
MOV P3,#0F0H
RET
KEY7: MOV P2,#78H
MOV P3,#0F0H
RET
KEY8: MOV P2,#00H
MOV P3,#0F0H
RET
KEY9: MOV P2,#10H
MOV P3,#0F0H
RET
KEY10: MOV P2,#08H
MOV P3,#0F0H
RET
KEY11: MOV P2,#03H
MOV P3,#0F0H
RET
KEY12: MOV P2,#46H
MOV P3,#0F0H
RET
KEY13: MOV P2,#21H
MOV P3,#0F0H
RET
KEY14: MOV P2,#06H
MOV P3,#0F0H
RET
KEY15: MOV P2,#0EH
MOV P3,#0F0H
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -