代码实现一个按键检测函数,要求能识别以下功能:单次按键,松开按键生效;双次按键,松开按键生效;长按按键,松开按键生效。可以使用伪代码

while(1)

{

         if(button == 0)  //按键被按下

         {

                   if(button_state == 0)  //按键第一次被按下

                   {

                            delayms(20);

                            if(button == 0)   //再次判断按键是否被按下

                            {

                                     timer1start;    //按下后定时器开始计时

                                     button_state =1;               //置状态位

                            }



                   }

                   else if( button_state  == 1 && timer2 < 1000)  //在第一次按下之后1s之内按键有动作,进行判断,置位按键状态为2,等待再次放手。

                   {

                            delayms(20);

                            if(button == 0)

                            {

                                     timer2stop;

                                     button_state =2;

                            }

                   }

         }





         if( timer2 > 1000)                                            //按键松开之后无动作1s判断为单次按下

         {

                   button_state = 0;

                   timer2stop;

                   return oncepress;

         }





         if (button == 1 && button_state > 0 ) // 按键松开后

         {

                   if( button_state == 1)                          //第一次按下

                   {  if( timer1 > 3000)                         //判断是否长按3s

                      {

                             button_state = 0

                            return longpress;                        //返回长按值

                            }

                     else

                     {

                            timer1stop;                                           //不是长按停止定时器1,启动定时器2开始判断是否是单次按下还是双次按下

                            timer2start;

                     }

                   }

                   else if( button_state == 2)                 //判断按键为状态2,返回双次按下值

                   {

                             button_state = 0

                            return twicepress;

                   }





         }

}

       

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值