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