前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【问题】按键长按短按demo

【问题】按键长按短按demo

作者头像
单片机技术宅
发布2021-01-04 10:50:00
7070
发布2021-01-04 10:50:00
举报
文章被收录于专栏:初学单片机

正文

就这两天,考试的小伙伴在群里问了考试题。大意如下:识别独立按键的长按,短按,通过长按和短按来控制LED的显示方式,短按点亮LED,长按让LEd闪烁。

既然是考试题,我们就用最简单的方式实现功能就好,管它红毛黑猫,抓到耗子就是好猫。

既然是最简单的方式,就不去考虑程序的结构性,时效性,不用中断,不用定时器,就用最最简单的延时方式去检测按键。完整按键程序如下:

代码语言:javascript
复制
if(key1==0){
      Delay10ms();
      if(key1==0){
        //等待按键释放,在等待过程中10ms累加一次,
      //后续通过判断这个累加值的大小判断长按还是短按
        while(!key1){        
            cont_step++;  
            Delay10ms();          
        }
        //cont_step变量的大小控制长按的时常
        if(cont_step<120){
          cont_key=1;
        }
        else{cont_key=2;}  
        cont_step=0;
      }
    }
    //控制LED的显示方式,这里采用闪烁的快慢来区别
    //模式1为快闪,模式二为慢闪
    switch(cont_key){
      case 1: led_flash();
              break;
      
      case 2: led_flash1();
              break; 
    }
  }

简单演示了一下,功能实现。

简单分析一下,采用最简单演示二次检测法去识别按键是否按下,如果按键被按下后,采用while()等待按键释放,在等待的过程中采用10ms延时等待后去循环的对变量实现加1计数。等到按键释放后再去判断等待过程中的计数值,在本例中,计数值大于120就认为是长按发生,不然就认为是按键短按。这里的计数值为120,实测时间约为2.5左右。

总结

好多为了考试入群的小伙伴,一般是小白,最简单的基础都没学到,所以采用最简单的方式去实现,考试嘛,实现了就好,分数才是硬道理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单片机技术宅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档