51单片机汇编语言利用定时器中断方式实现长短按键的检测

前面已经学习了单个按键的检测,今天我们来学学单个按键长按和短按的检测。利用一个按键实现数字增减操作。短按一次数码管数值加一,长按一次数码管数据减一。

一、长短按键的检测原理:

当检测到有按键按下时,启动定时器T0开始定时,置位按键按下标志位为1,设置定时器每10ms中断一次,在中断服务程序中让计数器R5的值加1。等待按键弹起,关掉定时器,清除按键按下标志位。然后根据R5的值乘以10ms得到按键按下去持续的时间,再用该时间和设定的阀值时间进行比较,如果小于阀值时间则判定为短按,否则为长按键。阀值可以更改,一般大于300ms认为是长按键,所以本实验设置阀值为300ms,当R5的值大于等于30时,就认为是长按键。

二、实验原理图

三、程序代码

 /*********************************/
/*程序功能:主要用在按键较少的情况 
该程序可以实现一个按键两种功能,短按一次
数码管数值加一,长按一次数码管数据减一
实现一个按键控制数据的增减
/*********************************/

keyold bit 20h.0  ;保存按键值
key bit p3.2      ;按键输入
LED bit p1.4	  ;P1.4接LED
FMQ bit p2.4	  ;蜂鸣器
DUAN equ P0       ;P0段码(共阳极)
WEI  bit P2.0     ;位选端
org 0000h
ajmp main
org 000bh
   						;定时10ms
    MOV TL0,#000H		;设置定时初值
	MOV TH0,#0DCH		;设置定时初值
	inc r5       
	reti
main:
    ORL TMOD,#01H		;设置定时器模式
	MOV TL0,#000H		;设置定时初值
	MOV TH0,#0DC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值