OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3843|回复: 4

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

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-8-3
在线时间
4 小时
发表于 2016-1-12 14:15:26 | 显示全部楼层 |阅读模式
5金钱
今天看到一种用状态机检测按键的做法,感觉很新颖,框图如下:
aa.jpg 但是跟在底下的实例程序里,把这个函数放在了while(1)里,虽然while(1)里还有别的程序,但中间也没有人任何延时,所以感觉这样的状态机并没有起到去除抖动的作用。不知道这样的做法是否正确还是我理解错了。求各位指教。

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

我把书也上传上来吧,这本书讲C51,感觉挺不错的,也分享下。关于按键消抖的部分在按键的230多页。

《51单片机C语言创新教程》 PDF版.pdf

7.58 MB, 下载次数: 503

最佳答案

查看完整内容[请看2#楼]

定时器做个节拍,主函数里面,一个节拍扫描一次按键就行了,去抖什么的,自己设置节拍数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1879
金钱
1879
注册时间
2014-6-27
在线时间
995 小时
发表于 2016-1-12 14:15:27 | 显示全部楼层
定时器做个节拍,主函数里面,一个节拍扫描一次按键就行了,去抖什么的,自己设置节拍数
回复

使用道具 举报

18

主题

422

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1139
金钱
1139
注册时间
2014-5-24
在线时间
116 小时
发表于 2016-1-12 14:21:22 | 显示全部楼层
楼主不妨实践一番,看看有没有如你所推测的
I See Fire.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.·.  只给方向,不妨碍思考
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-8-3
在线时间
4 小时
 楼主| 发表于 2016-1-12 14:43:40 | 显示全部楼层
emWin 发表于 2016-1-12 14:21
楼主不妨实践一番,看看有没有如你所推测的

恩   今晚回去做做试试看
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2017-1-24
在线时间
8 小时
发表于 2017-2-10 12:04:53 | 显示全部楼层
本帖最后由 xiaochu312 于 2017-2-10 12:12 编辑

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-24 12:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表