今天看到一种用状态机检测按键的做法,感觉很新颖,框图如下:
但是跟在底下的实例程序里,把这个函数放在了while(1)里,虽然while(1)里还有别的程序,但中间也没有人任何延时,所以感觉这样的状态机并没有起到去除抖动的作用。不知道这样的做法是否正确还是我理解错了。求各位指教。
(我感觉如果把这样的函数放在定时器中断里面,大概10ms执行一次,再加一个状态确认按键稳定按下,才能起到去除抖动的作用。)
我把书也上传上来吧,这本书讲C51,感觉挺不错的,也分享下。关于按键消抖的部分在按键的230多页。
我也是新手,扫描函数放在主函数,和扫描程序放在定时器中断,个人感觉都一样的,1、放在主函数,比如定时器设置好定时10MS,定时器中断设置个标志位,主函数判断标志位,扫描按键,这样也是起到10MS扫描一次的效果;2、扫描程序放在定时器中断,中断一次扫描一个,也是10MS扫描一个按键;3、其实定时的10MS间隔就起到了消抖的作用,比如按键按下,10MS后扫描还检测到按键还按下,判断有键按下
一周热门 更多>