• 按键连按和不连按


    声明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

  • 相关阅读:
    php 接口类与抽象类的实际作用
    php中的implements 使用详解
    swoole两种运行模式BASE和PROCESS的区别
    Java多线程总结
    Shell WordCount:一行shell命令统计固定格式单词词频
    收藏大数据相关写的比较好的博客
    Hive-SQL查询连续活跃登陆的用户
    Mysql触发器
    Python json字符串和字典相互转换
    MySQL基础之实现累加值
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12026666.html
Copyright © 2020-2023  润新知