几种按键扫描软件处理方法

按键扫描是每个工程师都会用到的,它就像一个零部件,存在于每个程式系统中。而如何把它写得高效、省空间也是需要一定的技巧。

下面我介绍一下我接触到的一些按键扫描的写法。其实也都是站在巨人的肩膀上,再加上自己的理解稍微改动的,如果有什么错误,请大家指出讨论,一起进步。

在读书时很多人都是采用delay()的方式,我一开始也是,就这么用到毕业难过,所以做出来的东西经常出问题

if(pin_Key1_IO)

{

delay_MS(10); // 在這裡CPU停了10ms,

if(pin_Key1_IO)

{

gu8v_Key_Value = 0x01;

}

}

這種方式無疑是最好理解的,但很低效並且有一定幾率出去Bug,

而在工作時,慢慢地回去動腦去想如何改善,參考網上的很多做法,就有了如下的方法

    if(!gbv_Key1_Mode)
   { // 按键按下
if(!pin_Key1_IO) // 按键消抖
{
gu16v_Key1_Count++;
}
else
{
gu16v_Key1_Count = 0;
}
   if(gu16v_Key1_Count > mac_KeyDebounce)
   { //

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值