按键消抖是否必须空等待

[复制链接]
查看11 | 回复10 | 2021-1-27 07:17:20 | 显示全部楼层 |阅读模式
小弟初学单片机,看教材的按键消抖均采用delay()函数。
请问各位大侠,在实际工程应用中是否这样,让CPU什么也不做等待10ms?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
用定时器中断嘛
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
那是否按键扫描程序写在定时中断函数内?
有没有实际工程实例的程序段贴上一段
不胜感谢
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
坦白的讲,实际代码中99%用的都不是延时。
常用方法:
如楼上说的中断,端口产生中断,置位一个标志,主循环去查询标志;
计数消抖也是很常用的方式。
推荐楼主一片不错的文章《匠人手记》之《按键漫谈》,时序图,代码,单击、连击等等讲解详细,难得好书.
网络版很容易搜到。

回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
引用2楼的回复:那是否按键扫描程序写在定时中断函数内?
有没有实际工程实例的程序段贴上一段
不胜感谢

中断要尽量简洁。
终端中置位一个标志,主循环去查询,比较合理。
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
可取多次平均值,但保证每次取值都在按键有效范围内;
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
看具体情况了,实时性要求不高这样最简单。
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
如果没有操作系统的话,那么你可以在主体上用状态机,保证各个任务并行执行,当你的按键扫描在等待的时候,其它的任务照常在执行就行。
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
看你实际系统的情况,对实时性要求不高的,建议就直接延时吧,简单可靠,实际工业应用中,简单可靠是最重要的。如果说实时性要求很高,那另当别论。
回复

使用道具 举报

千问 | 2021-1-27 07:17:20 | 显示全部楼层
看具体情况了,实时性要求不高这样最简单。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行