[51单片机] 关于按键去抖的一点小问题

[复制链接]
1879|13
 楼主| huhaomcu 发表于 2014-10-29 21:42 | 显示全部楼层 |阅读模式
软件去抖一般都是在IO状态变化后进行短暂延时.如果我将按键接在单片机的外部中断INT引脚之上,此时采用中断的方法判断是否按键按下,在这种情况下请问如何去抖,不可能说在中断服务程序内做延时后,又重新查询吧!!
ayb_ice 发表于 2014-10-30 07:57 | 显示全部楼层
杀**用牛刀
wangch_sh 发表于 2014-10-30 08:22 | 显示全部楼层
定时器
慢慢学 发表于 2014-10-30 10:08 | 显示全部楼层
同意3L的说法,用定时器查询外部中断引脚上的电平变化,判断是否有按键按下,不需要用延时!!!如果是短按键的话,按键是松手检测,
受不了了 发表于 2014-10-30 10:30 来自手机 | 显示全部楼层
我都是在循环里每过几次循环查询一下,因为那些按键功能大部分都在主循环里处理,上升沿下降沿,长按短按,主循环只偶尔会来一次几个毫秒的处理,对于按键来说根本就不是事
m564522634 发表于 2014-10-30 11:02 | 显示全部楼层
实际情况是因为抖动的问题,单片机会多次进入中断。你用还不如不用
m564522634 发表于 2014-10-30 11:05 | 显示全部楼层
m564522634 发表于 2014-10-30 11:02
实际情况是因为抖动的问题,单片机会多次进入中断。你用还不如不用

或者进入中断后,触发一个按键检测标志在在主程序里去抖动。这样做的惟一好处是按键有的时候可以唤醒单片机。
命中注定0818 发表于 2014-10-30 19:13 | 显示全部楼层
实践出真知,楼主加油
 楼主| huhaomcu 发表于 2014-10-30 22:30 | 显示全部楼层
wangch_sh 发表于 2014-10-30 08:22
定时器

定时器?思路是什么 ??
wangch_sh 发表于 2014-10-31 08:20 | 显示全部楼层
定时5ms,每中断一次判断一次状态,如果第一次按下,第二次检测又按下,表明已按下,两次之间算消抖。第三次检测释放。
无影行者 发表于 2014-10-31 12:05 | 显示全部楼层
用状态机的方法很好
hfutsly 发表于 2014-10-31 14:35 | 显示全部楼层
好主意~
NE5532 发表于 2014-10-31 14:46 | 显示全部楼层
片外加个RC电路,或者施密特门,硬件去抖动。
coody 发表于 2014-10-31 16:21 | 显示全部楼层
键扫优先考虑定时扫描。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

509

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部