单片机长短按键

1.直接上程序




#define  K    P0_7                 //独立按键

#define  ON    0                   //按键按下的电平值
#define  OFF   1
#define JSQ_L  5                  //消除抖动计数器门限下限
#define JSQ_H  60                 //消除抖动计数器门限上限
#define  KEY_SHORT  0X20          //自定义短按标志
#define  KEY_LOG     0X22         //自定义长按标志
#define  DLEPY   f()              //f()是系统中实时性要求较高的函数,在这里插入充当消抖可以兼顾实时性方面的要求
/********************************************************************
函数名称:按键检测
**********************************************************************/
unsigned char key_scan(void)
{
unsigned char timer=0,key_vlu=0;
  while(K==ON)
     {
  DELPY;                    
  timer++;                  //按键计数器计数
  if(timer>JSQ_H) break;    //溢出退出
  }
  if(timer> JSQ_L  && timer< JSQ_H)  key_vlu=KEY_SHORT;   //判为短按
  if( timer >JSQ_H )   key_vlu=KEY_LOG;                   //判为长按
  return ( key_vlu );

}



你可能感兴趣的:(单片机长短按键)