键盘_定时中断防抖
按键为什么防抖,处理器反应速度是很快的,而按键按下的那一瞬间,处理器会识别出按下很多次,因此要进行防抖。防抖有软延时和硬延时,软延时是处理器死机,因此中断里处理按键最高效。
1.确定防抖查询时间,也就是说按键按下多长时间才算是真真正正按下,这个时间也就是定时器的定时时间。
2.进入中断,获取当前按键值(这个按键值是瞬时的,尚未生效的)。
3.判断当前按键值是否与上次按键值一样,根据结果进行散转,分支为4、5描述。
4.一样:假如定时时间为5ms,那么5ms之前的按键值和当前按键值一样,说明按键确实按下去了。
5.不一样:按键抖动,并没有真真正正按下去,但是需要把按键值进行更新,即上次按键值修改成当前按键值。
算法:
如果此刻为t,定时时间为T,那么上次按键的时刻为t-T.
如果t时刻的按键值与t-T时刻的按键值相等,则按键确实按下,按键值为t-T.
如果不相等,按键值更新,t-T=t.