📄 key.asm
字号:
ORG 0000H
LJMP START
ORG 000BH
LJMP T0ZD
START:MOV 60H,#30H;显示0
MOV TMOD,#11H;设置20ms定时中断(6M)
MOV TH0,#0ECH
MOV TL0,#78H
SETB EA;启动定时中断
SETB ET0
SETB TR0
LOOP:MOV P0,60H;送控制端口显示
SJMP LOOP;循环等待
T0ZD:CLR EA;定时中断子程序
MOV TH0,#0ECH
MOV TL0,#78H
MOV A,P2
CJNE A,#0FFH,KEY1
LJMP EXIT;无键按下中断返回
KEY1:CJNE A,#0FEH,KEY2;判断1键是否按下,是则进行相应处理
LCALL DELAY;防止抖动
K1W:MOV P0,60H
JNB P2.0,K1W;按抬起后进行处理程序
MOV A,#01H;处理程序
LJMP EXIT1;结束,准备返回
KEY2:CJNE A,#0FDH,KEY3
LCALL DELAY
K2W:MOV P0,60H
JNB P2.1,K2W
MOV A,#02H
LJMP EXIT1
KEY3:CJNE A,#0FBH,KEY4
LCALL DELAY
K3W:MOV P0,60H
JNB P2.2,K3W
MOV A,#03H
LJMP EXIT1
KEY4:CJNE A,#0F7H,KEY5
LCALL DELAY
K4W:MOV P0,60H
JNB P2.3,K4W
MOV A,#04H
LJMP EXIT1
KEY5:CJNE A,#0EFH,KEY6
LCALL DELAY
K5W:MOV P0,60H
JNB P2.4,K5W
MOV A,#05H
LJMP EXIT1
KEY6:CJNE A,#0DFH,KEY7
LCALL DELAY
K6W:MOV P0,60H
JNB P2.5,K6W
MOV A,#06H
LJMP EXIT1
KEY7:CJNE A,#0BFH,KEY8
LCALL DELAY
K7W:MOV P0,60H
JNB P2.6,K7W
MOV A,#07H
LJMP EXIT1
KEY8:CJNE A,#7FH,EXIT
LCALL DELAY
K8W:MOV P0,60H
JNB P2.7,K8W
MOV A,#08H
LJMP EXIT1
EXIT1:ORL A,#30H
MOV 60H,A
EXIT:SETB EA
RETI
;============================1sm延时子程序(6M)
DELAY:MOV R6,#02H
AGAIN:MOV R7,#0F8H
DELAY1:DJNZ R7,DELAY1
DJNZ R6,AGAIN
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -