码迷,mamicode.com
首页 > 其他好文 > 详细

按键抖动的处理方法(按键外部中断)

时间:2018-06-25 23:00:51      阅读:1143      评论:0      收藏:0      [点我收藏+]

标签:处理   没有   条件   建议   解决办法   禁用   div   操作   原因   

当把按键设为外部中断时,存在按键抖动问题:

  1. 一种情况是没有按按键的时候,按键有时也会因为震动等原因误触发按键事件,引起程序误判。对于这种按键抖动,解决方式有:
    1. 并上一个小电容(比如0.1uF)即可解决。
    2. 延时检测:检测到按键中断后延时50ms判断这个引脚电平,然后再做进一步处理。
  2. 还有一种情况是按下按键时,由于按键本身的结构或质量问题、操作者的发力问题等,在操作者按下一次按键的过程中,实际上触发了数次按下-抬起的动作,引起程序误判。对于这种按键抖动,解决方式有:
    1. 延时检测:检测到按键中断后延时50ms判断这个引脚电平,然后再做进一步处理。
    2. 禁用中断:进入中断后禁用中断,处理完按键操作后再使能中断。这需要两个条件:没有按键行为时不会有中断发生;处理按键操作的时间足够长,长于一次按键操作的时间(大概是几百ms)。
  3. 总体来说,建议的解决办法是:
    1. 按键两端并联一个0.1uF电容,可以大幅度减少抖动发生
    2. 程序中添加延时检测:检测到按键中断后,过50ms左右检测引脚电平。
      1. 如果中断是检测按键按下:如果检测到高电平,说明刚刚发生了1型按键抖动,此次按键中断忽略不计;如果是低电平,可以判断发生了按键事件。另外,应在处理完按键事件后再清除按键事件标志,如此可以避免在处理过程中发生的2型抖动所引发的误判。
      2. 如果中断是检测按键抬起:如果检测到高电平,可以判断发生了按键事件;如果是低电平,说明刚刚发生了2型按键抖动,此次按键中断忽略不计,继续等待抬起动作。检测按键抬起时似乎难以判断1型按键抖动,不过并上电容后基本不会发生这种抖动。

按键抖动的处理方法(按键外部中断)

标签:处理   没有   条件   建议   解决办法   禁用   div   操作   原因   

原文地址:https://www.cnblogs.com/cage666/p/9226538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!