📄 key.asm
字号:
;-----------键盘扫描相关-----------
KEYH EQU 30H ;待扫描行线
KEYL EQU 31H ;待扫描列线
KEYZ EQU 32H ;按键值
KEYN EQU 33H ;指示待扫描行
ORG 0000H
SJMP START
ORG 0040H
START: MOV SP,#68H ;主程序入口
KEY1: MOV P1,#0F0H ;行线为P0-P3,列线为P4-P7
MOV A,P1
ORL A,#0FH
CPL A
JNZ IN
SJMP KEY1
IN: ACALL DELAY
MOV KEYH,#04H
MOV KEYN,#07FH ;做指针,指示待扫描行
MOV KEYZ,#0
SCAN: MOV A,KEYN
RL A
MOV KEYN,A
MOV P1,A ;逐行扫描,被扫描行送低
MOV A,P1 ;读列线电平值
SWAP A
MOV KEYL,#04H
KEY2: RRC A
JNC FIND ;C位不为1转
INC KEYZ
DJNZ KEYL,KEY2
DJNZ KEYH,SCAN
SJMP KEY3
FIND: MOV P1,#0F0H
LOOSEN:MOV A,P1
ORL A,#0FH
CPL A
JNZ LOOSEN
KEY3: SJMP START
;**************************键盘20MS延时**************************************
DELAY:MOV R6,#15H
DL2: MOV R7,#18H
DL1: NOP
NOP
DJNZ R7,DL1
DJNZ R6,DL2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -