码迷,mamicode.com
首页 > 其他好文 > 详细

按键连按和不连按

时间:2019-12-12 01:09:27      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:模式   遥控器   stat   进入   col   按键处理   code   key   返回值   

声明1个概念:

  连按:就类似于遥控器的+ - 音量键 只要你按住不松手 他就一直 + 或 -

  不连按:按下去 弹起来 这个过程算作是一次有效按键,如果按下去不弹起则不会进行任何操作

 

 

//按键处理函数
//返回按键值
//mode:0,不支持连续按;1,支持连续按;
//0,没有任何按键按下
//1,WKUP按下 WK_UP
//注意此函数有响应优先级,KEY0>KEY1>KEY2>WK_UP!!
u8 KEY_Scan(u8 mode)
{
    static u8 key_up=1;     //按键松开标志
    if(mode==1)key_up=1;    //支持连按
    if(key_up&&(KEY0==0||KEY1==0||KEY2==0||WK_UP==1))
    {
        delay_ms(10);
        key_up=0;
        if(KEY0==0)       return KEY0_PRES;
        else if(KEY1==0)  return KEY1_PRES;
        else if(KEY2==0)  return KEY2_PRES;
        else if(WK_UP==1) return WKUP_PRES;          
    }else if(KEY0==1&&KEY1==1&&KEY2==1&&WK_UP==0)key_up=1;
    return 0;   //无按键按下
}

 

 

代码解释:当mode == 0 时,在按下的时候,第一次检测到按下会触发,第二次检测到按下 但是此时key_up == 0 返回值是 0 没有动作变化,直到改变了按键状态,才会改变key_up这个标志位的值,才会使灯的亮度发生变化

    当mode == 1 时,key_up被static修饰,这个值不会被重复初始化,所以当第二次检测到按下时key_up会变成1 从而进入if条件,return出一个检测到按键的返回值。

 

这个代码的妙用就是当你长时间按下一个键,不同的模式,是否会选择给回第二次(后面很多次)检测的返回值。

如果给回返回值 则表示检测到了 那就是连按

r

按键连按和不连按

标签:模式   遥控器   stat   进入   col   按键处理   code   key   返回值   

原文地址:https://www.cnblogs.com/qifeng1024/p/12026666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!