按键扫描优化方法
按键扫描怎么样才能做的更精准呢?普遍都是延时20ms消抖,或者说调整延时时间来降低误触发的概率。广大网友有什么更好的办法?假定主循环时间在 【50mS ~ 10mS】
那就查询,主循环中查询到连续2次读按键是按下的状态
就认为有该按键事件 !
处理完该按键事件后,要判断该按键是否已被释放
本帖最后由 xxkj2010 于 2023-12-30 15:17 编辑
我以为是技术分享,原来是求助贴。
网上可以找到一些方法,我试过用定时器来协助检测按键,比直接用普通延时delay_ms(20)复杂些。 仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。 社区闲人 发表于 2023-12-28 09:26
仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。
可否分享个例程,谢谢! 社区闲人 发表于 2023-12-28 09:26
仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。
是的,定时器资源必定有限 这个消抖,要么增加硬件电路,,,要么软件处理,,,你这里看到还是普遍延时,,,那还是用用定时器的那种把。
给人机交互接口一个定时器用也不算太奢侈,,毕竟可以用作定时器的片上的资源还是很多的。。 amobbs里有几个关于按键的帖子挺不错的可以去参考下 按键识别
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5753
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
这个帖子也有进行过相关讨论,可以参考一下。
使用定时器做时间片任务调度,或者知道主循环多少时间执行一次的话,就可以设置按键循环扫描次数。 zhudean11 发表于 2023-12-28 09:45
可否分享个例程,谢谢!
【分享】新型的按键扫描程序 + 累计循环次数。不占用定时器
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5936
(出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)