📄 单行键盘.txt
字号:
;P3.2-P3.5通过键盘可接地,这里可根据实际的需要灵活地选择I/O口和数目,以下是单列键盘子程序
KEY:
CLR F0 ;清F0,表示无键按下。
ORL P3,#00111100B ;将P3口的接有键的四位置1
MOV A,P3 ;取P3的值
ORL A,#11000011B ;将其余4位置1
CPL A ;取反
JZ K_RET ;如果为0则一定无键按下
ACALL DELAY ;否则延时去键抖
ORL P3,#00111100B
MOV A,P3
ORL A,#11000011B
CPL A
JZ K_RET
MOV B,A ;确实有键按下,将键值存入B中
SETB F0
SJMP K_READ ;设置有键按下的标志
K_RET:
ORL P3,#00111100B ;此处循环等待键的释放
MOV A,P3
ORL A,#11000011B
CPL A
JZ K_RET1 ;直到读取的数据取反后为0说明键释放了,才从键盘处理程 ;序中返回
AJMP K_RET
K_RET1:
RET
K_READ:
JNB F0,K_RET1 ;若F0为0,则返回,若F0不为0,则转到判断那个键按下
ACALL KEYPROC
KEYPROC:
MOV A,B ;从B寄存器中获取键值
JB ACC.2,KeyStart ;分析键的代码,某位被按下,则该位为1
JB ACC.3,KeyOver
JB ACC.4,KeyUp
JB ACC.5,KeyDown
…… ;可再增加
AJMP KEY_RET
KeyStart:
;第一个键按下后的处理
KeyOver:
;第二个键按下后的处理
KeyUp:
;第三个键按下后的处理
KeyDown:
;第四个键按下后的处理
……
KEY_RET:
RET
DELAY:
MOV R7,#10
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
RET
;---------延时程序,键盘处理中调用
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -