找回密码
 立即注册
查看: 819|回复: 18

按键扫描优化方法

[复制链接]
  • TA的每日心情
    开心
    2024-4-23 12:50
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    2

    主题

    32

    回帖

    138

    积分

    注册会员

    积分
    138
    发表于 2023-12-27 19:44:39 | 显示全部楼层 |阅读模式
    按键扫描怎么样才能做的更精准呢?普遍都是延时20ms消抖,或者说调整延时时间来降低误触发的概率。广大网友有什么更好的办法?
    回复 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9497

    回帖

    1万

    积分

    管理员

    积分
    14071
    发表于 2023-12-28 11:44:16 | 显示全部楼层
    假定主循环时间在 【50mS ~ 10mS】
    那就查询,主循环中查询到连续2次读按键是按下的状态
    就认为有该按键事件 !

    处理完该按键事件后,要判断该按键是否已被释放
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:36
  • 签到天数: 173 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2890

    积分

    金牌会员

    积分
    2890
    发表于 2023-12-28 08:52:11 | 显示全部楼层
    本帖最后由 xxkj2010 于 2023-12-30 15:17 编辑

    我以为是技术分享,原来是求助贴。
    网上可以找到一些方法,我试过用定时器来协助检测按键,比直接用普通延时delay_ms(20)复杂些。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:15
  • 签到天数: 172 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1363

    积分

    荣誉版主

    积分
    1363
    发表于 2023-12-28 09:26:29 | 显示全部楼层
    仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:17
  • 签到天数: 154 天

    [LV.7]常住居民III

    18

    主题

    602

    回帖

    663

    积分

    高级会员

    打工人

    积分
    663
    发表于 2023-12-28 09:45:32 | 显示全部楼层
    社区闲人 发表于 2023-12-28 09:26
    仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。

    可否分享个例程,谢谢!
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:17
  • 签到天数: 154 天

    [LV.7]常住居民III

    18

    主题

    602

    回帖

    663

    积分

    高级会员

    打工人

    积分
    663
    发表于 2023-12-28 09:46:00 | 显示全部楼层
    社区闲人 发表于 2023-12-28 09:26
    仅仅按键扫描就使用定时器,很奢侈。我用累计循环次数进行按键扫描。

    是的,定时器资源必定有限
    打工人
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:37
  • 签到天数: 143 天

    [LV.7]常住居民III

    20

    主题

    1093

    回帖

    2603

    积分

    金牌会员

    积分
    2603
    发表于 2023-12-28 10:08:29 | 显示全部楼层
    这个消抖,要么增加硬件电路,,,要么软件处理,,,你这里看到还是普遍延时,,,那还是用用定时器的那种把。
    给人机交互接口一个定时器用也不算太奢侈,,毕竟可以用作定时器的片上的资源还是很多的。。
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    前天 11:08
  • 签到天数: 104 天

    [LV.6]常住居民II

    7

    主题

    74

    回帖

    663

    积分

    高级会员

    积分
    663
    发表于 2023-12-28 11:15:46 | 显示全部楼层
    amobbs里有几个关于按键的帖子挺不错的可以去参考下
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2023-12-28 15:21:29 | 显示全部楼层
    按键识别
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5753
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)

    这个帖子也有进行过相关讨论,可以参考一下。
    使用定时器做时间片任务调度,或者知道主循环多少时间执行一次的话,就可以设置按键循环扫描次数。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:15
  • 签到天数: 172 天

    [LV.7]常住居民III

    17

    主题

    371

    回帖

    1363

    积分

    荣誉版主

    积分
    1363
    发表于 2023-12-28 16:00:29 | 显示全部楼层
    zhudean11 发表于 2023-12-28 09:45
    可否分享个例程,谢谢!

    【分享】新型的按键扫描程序 + 累计循环次数。不占用定时器
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=5936
    (出处: 国芯论坛-STC全球32位8051爱好者互助交流社区)
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 04:43 , Processed in 0.068062 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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