📄 keyboard.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
KEY: MOV P1,#0FFH
MOV A,P1 ;读入按键状态
ANL A,#0FH ;屏蔽掉无用位
CJNE A,0FH,KEY1 ;有键按下,转移
KEY3: CLR PSW.5 ;无键按下,清按键标志
RET ;返回主程序
KEY1: LCALL DELAY
MOV A,P1 ;再次读入按键状态
ANL A,#0FH ;屏蔽掉无用位
CJNE A,0FH,KEY2 ;有键按下,转移
SJMP KEY3 ;无键按下,转移
KEY2: JB ACC.0,KEY4 ;是“0”号键?
MOV A,#0 ;键号为0
SJMP KEY5
KEY4: JB ACC.1,KEY6
MOV A,#1
SJMP KEY5
KEY6: JB ACC.2,KEY7
MOV A,#2
SJMP KEY5
KEY7: JB ACC.3,KEY3
MOV A,#3
KEY5: PUSH ACC ;保存键号
KEY8: MOV A,P1 ;读入键状态
ANL A,#0FH ;屏蔽掉无用位
CJNE A,#0FH,KEY8 ;按键没释放,等待
LCALL DELAY
MOV A,P1 ;在此读入键状态
ANL A,#0FH ;屏蔽掉无用位
CJNE A,#0FH,KEY8 ;键抖动,按键没释放,等待
POP ACC ;返回键号
SETB PSW.5 ;置标志位
RET ;返回主程序
DELAY: MOV R6,#20
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -