[原创] 简单的按键单双击长按
1030 查看
1 回复
 楼主 | 发布于 2021-04-22 | 只看楼主
分享到:

//初始化变量

short1_pressflag = 0;
key1_loosenflag = 0;
key1_pressflag = 0;
press_cnt = 0;
start_cnt = 0;
start_flag = 0;

void Key1_scan(void)//函数体

{
    if(key1_pressflag)//20ms
    {
        key1_pressflag = 0;
        if(!Key1)//
        {
          if(!key1_loosenflag)//
          {
              short1_pressflag = 1;
              if(++time_cnt > 49)//长按1s关机
              {

                  time_cnt = 0;

                    //长按功能可写于此处

                  press_cnt = 0;
                  start_cnt = 0;
                  start_flag = 0;
                  short1_pressflag = 0;
                  key1_loosenflag = 1;
              }
          }
        }
        else //
        {
          if(short1_pressflag)
          {
            short1_pressflag = 0;
            if(!start_flag)
            {
                 start_flag = 1;
            }
            press_cnt++;
          }
          if(Sig_press_flag)
          {

            Sig_press_flag = 0;

            //短按功能可写于此处

          }

          if(Dul_press_flag)
          {

            Dul_press_flag = 0; 

            //双击功能可写于此处

          }
          key1_loosenflag = 0;
          time_cnt = 0;
        }
    }

}


//置于5ms定时器中

      if(start_flag)//单双击
      {
        if(++start_cnt > 59)//计时300ms
        {
             start_cnt = 0;
            start_flag = 0;
        }
      }
      else
      {
        start_cnt = 0;
        if(press_cnt == 1)
        {
          Sig_press_flag = 1;
        }
         else if(press_cnt > 1)
        {
          Dul_press_flag = 1;
        }
        press_cnt = 0;
      }

(0 ) (0 )
回复 举报

回复于 2021-11-04 沙发

可读性不高,后人踩坑
(1 )
评论 (1) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部