📄 key扫描 逐行扫描法.asm
字号:
ORG 0000H
SJMP START
START: MOV SP,#60H
;*********P1.7~P1.4为列线的4~1
;*********P1.3~P1.0为行线的4~1
KEYSCAN:MOV R2,#00H ;用于存放键值
MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,SCAN
SJMP KEYSCAN
SCAN: ACALL DEL10MS
MOV P1,A
ANL A,#0FH
CJNE A,#0FH,KEY
SJMP KEYSCAN
KEY: MOV R3,#0EFH ;扫描行初值
MOV R4,#00H ;扫描次数初值
MOV A,R3
L1: MOV P1,A
MOV A,P1
JB ACC.0,L2
MOV A,#00H
AJMP KEYREAD
L2: JB ACC.1,L3
MOV A,#04H
AJMP KEYREAD
l3: JB ACC.2,L4
MOV A,#08H
AJMP KEYREAD
L4: JB ACC.3,NEXT
MOV A,#0CH
AJMP KEYREAD
NEXT: INC R4
MOV A,R3
RL A
MOV R3,A
CJNE R4,#04H,L1
AJMP KEYSCAN
KEYREAD:ADD A,R4
MOV R2,A ;扫描所得到的键值存于R2中
AJMP KEYSCAN
;**********************10MS
DEL10MS:MOV R7,#50
DEL11: MOV R6,#100
DEL10: DJNZ R6,DEL10
DJNZ R7,DEL11
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -