请问“将状态机检测按键放在主函数里的用法”正确吗?

2019-10-15 03:32发布

今天看到一种用状态机检测按键的做法,感觉很新颖,框图如下:
aa.jpg 但是跟在底下的实例程序里,把这个函数放在了while(1)里,虽然while(1)里还有别的程序,但中间也没有人任何延时,所以感觉这样的状态机并没有起到去除抖动的作用。不知道这样的做法是否正确还是我理解错了。求各位指教。

(我感觉如果把这样的函数放在定时器中断里面,大概10ms执行一次,再加一个状态确认按键稳定按下,才能起到去除抖动的作用。)

我把书也上传上来吧,这本书讲C51,感觉挺不错的,也分享下。关于按键消抖的部分在按键的230多页。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
TinyBoy
1楼-- · 2019-10-15 07:55
定时器做个节拍,主函数里面,一个节拍扫描一次按键就行了,去抖什么的,自己设置节拍数
emWin
2楼-- · 2019-10-15 13:05
 精彩回答 2  元偷偷看……
cc19950228
3楼-- · 2019-10-15 18:00
emWin 发表于 2016-1-12 14:21
楼主不妨实践一番,看看有没有如你所推测的

恩   今晚回去做做试试看
xiaochu312
4楼-- · 2019-10-15 20:35
本帖最后由 xiaochu312 于 2017-2-10 12:12 编辑

我也是新手,扫描函数放在主函数,和扫描程序放在定时器中断,个人感觉都一样的,1、放在主函数,比如定时器设置好定时10MS,定时器中断设置个标志位,主函数判断标志位,扫描按键,这样也是起到10MS扫描一次的效果;2、扫描程序放在定时器中断,中断一次扫描一个,也是10MS扫描一个按键;3、其实定时的10MS间隔就起到了消抖的作用,比如按键按下,10MS后扫描还检测到按键还按下,判断有键按下

一周热门 更多>