一个按键的多次击键组合判别技巧汇编程序

由于在学习用ds1302来做led时钟时,发现开发板附的程序对按键操作,很不灵活,后来在网上找到一篇《一个按键的多次击键组合判别技巧》;
c51汇编的参考程序,经学习摸索已改成c51汇编了,并已用xl400 单片;
;以下主程序演示了不同组合按键时,分别控制p2.0-p2.5各端口的led灯的亮灭。
;单次短击=>p2.0/led1
;单次长击=>p2.1/led2
;短击+短击=>p2.2/led3
;短击+长击=>p2.3/led4
;长击+短击=>p2.4/led5
;长击+长击=>p2.5/led6
;------------------------------------------------------------
org 0040h
ajmp main
main:
mov p1,#0ffh
mov p2,#0ffh;初始化端口
loop:
call sread_key;读单按键--子程序
mov r0,key_num
cjne r0,#00000010b,main1;比较键值不等跳
cpl led1_6.0;取反p2.0
main1:
cjne r0,#00000011b,main2;比较键值不等跳
cpl led1_6.1;取反p2.1
main2:
cjne r0,#00000100b,main3;比较键值不等跳
cpl led1_6.2;取反p2.2
main3:
cjne r0,#00000101b,main4;比较键值不等跳
cpl led1_6.3;取反p2.3
main4:
cjne r0,#00000110b,main5;比较键值不等跳
cpl led1_6.4;取反p2.4
main5:
cjne r0,#00000111b,main_exit;比较键值不等跳
cpl led1_6.5;取反p2.5
main_exit:
jmp loop
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;读单按键--子程序
;子程序执行后返回值key_num即键值
;-----------------------------说明----------------------------
;短击:键按下时间500ms
;两次按键间隔时间500ms跳
jnb key,skey_b;键未释放跳
call dl10ms;延时去抖动
jnb key,skey_b;键未释放跳
clr c;cy置0
jmp skey_d
skey_c:
jnb key,$;键未释放停
call dl10ms;延时去抖动
jnb key,$;键未释放停
setb c;cy置1
skey_d:
mov a,key_num
rlc a;键值左移一位,c->键值低位
mov key_num,a
jb key_num.2,skey_exit;判断按键检测是否完成,完成跳
;说明:key_num.1时只判断单次按键两种组合,key_num.2时可判断两次按键4种组合+单次按键的2种组合=6种,以此类推。
mov r0,#00h;清计数器
clr c;cy置0
skey_e:
call dl10ms
inc r0
mov a,#70
subb a,r0
jc skey_exit;当未按下>700ms跳出
jb key,skey_e;键释放跳
call dl10ms;延时去抖动
jb key,skey_e;键释放跳
jmp skey_a;当未按下<700ms再次检测
skey_exit:
ret
;************************************************************
;延时10ms
;************************************************************
dl10ms:
mov r5,#14h;20 ;10.262ms=20*511+2*20+1=20.261
time10ms_1:
mov r6,#0ffh;255 ;511us=255*2+1
djnz r6,$
djnz r5,time10ms_1
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end

2011年英特尔与AMD的GEM策略谁将胜出
特斯拉Autopilot只能做到自动辅助驾驶_不能100%识别静止障碍物?
新能源汽车加速爆发,功率器件迎来增长新契机
一汽弗迪新能源动力电池一期项目正式投产
LG W20手机配置紫光展锐虎贲SC9863A芯片成亮点
一个按键的多次击键组合判别技巧汇编程序
Motional CEO:自动驾驶领域非常有吸引力,这一点毋庸置疑
ILIFE智意天目X660扫地机器人评测 智能路径规划和实时控制方面表现不俗
vivox20什么时候上市?vivox20最新消息:vivox20代言人曝光宣传海报已出,已通过工信部认证
电子书备选购指南
怎样去使用ChatGPT呢?
传感器的应用领域和需求量
使用运算放大器的维恩桥振荡器设计
基于TX315A的数字编码无线遥控开关
超越X86 AWS自研Arm芯片正式走向HPC
新冠病毒的爆发为MCU发展带来了机遇
支付宝集五福老套路敬业福难,想要敬业福的看这里!
酷玩6:又一款最便宜的6G运存手机!骁龙653+64G,售价仅需小米6的一半
一种基于Android、iOS平台的移动端车牌识别技术,智慧停车的好助手
什么是RAID