📄 1键多功能按键识别技术.asm
字号:
;一键多功能按键识别技术
;P3.0接按键,P1.0-P1.3接LED灯。
ID EQU 30H ;ID值的存储地址
SP1 BIT P3.0 ;开关SP1管脚定义
L1 BIT P1.0 ;灯L1管脚定义
L2 BIT P1.1 ;灯L2管脚定义
L3 BIT P1.2 ;灯L3管脚定义
L4 BIT P1.3 ;灯L4管脚定义
ORG 0000H ;程序起始地址
MOV ID,#00H ;ID初始化为0
;主程序
START:MOV P1,#0FFH
JB SP1,REL ;键是否按下
LCALL DELAY10MS ;键按下,调用10ms延时子程序,取消按键抖动
JB SP1,REL ;键是否真的按下
INC ID ;键真的按下,ID加1
MOV A,ID
CJNE A,#04,REL ;键值是否=4?否的话,跳转至REL
MOV ID,#00H ;是的话,ID清零
REL:JNB SP1,$ ;按键是否释放?否的话,等待
MOV A,ID ;是的话,执行功能
D1:CJNE A,#00H,IS0
CPL L1 ;ID=0,L1亮
LCALL DELAY
JB P3.0,D1
SJMP START
IS0:CJNE A,#01H,IS1
CPL L1
CPL L2 ;ID=1,L1、L2亮
LCALL DELAY
JB P3.0,IS0
SJMP START
IS1:CJNE A,#02H,IS2
CPL L1
CPL L2
CPL L3 ;ID=2,L1、L2、L3亮
LCALL DELAY
JB P3.0,IS1
SJMP START
IS2:CJNE A,#03H,IS3
CPL L1
CPL L2
CPL L3
CPL L4 ;ID=3,L1、L2、L3、L4亮
LCALL DELAY
JB P3.0,IS2
SJMP START
IS3:LJMP START
;10ms延时子程序
DELAY10MS:MOV R6,#20
LOOP1:MOV R7,#248
DJNZ R7,$
DJNZ R6,LOOP1
RET
;灯闪烁的间隔时间
DELAY:MOV R5,#20
LOOP2:LCALL DELAY10MS
DJNZ R5,LOOP2
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -