×
单片机 > 单片机程序设计 > 详情

独立按键驱动程序

发布时间:2020-05-28 发布时间:
|

下面是独立按键驱动程序,特点是利用TIMER0中断,CPU在不停的扫描程序,60ms到,执行按键驱动,函数在48ms执行一次,60ms再次执行,避免了CPU资源的浪费
 

bit  ltkey = 0;       //防止按键被长按

bit  am_led = 0;


uchar  unitTemp = 0xff;
bit    amkey;

bit    remsg = 0;
bit    send = 0;
bit    delay100 = 0;

bit    mtoa = 0;

void KeyScn(void)      //按键扫描模块
{

 uchar NowKeyValue;
 bit   NowAMKeyValue;

 //检测按键
 if(pic == 10)      //首次按键检测
 {
   amkey = AMKEY;
   unitTemp = P2;
 }

 if(pic == 13)      //12ms后,再次执行检测
 {
  NowKeyValue = P2;
  NowAMKeyValue = AMKEY;

  if(NowKeyValue != unitTemp)   //如果两次检测到的结果不同,则认为是抖动,不做处理
  {
    unitTemp = 0xff;
  }

  if((NowAMKeyValue == amkey) && (amkey == 0))   //如果状态键按键有效
  {
    if(ltkey == 0)
    {           //AM状态LED位,0为自动,1为手动
      am_led = !am_led;
   if(am_led == 0)       //如果是从手动切回自动,切回到CH1
   {
     unitTemp = 0xf7;
     mtoa = 1;        //由手动切到自动后的标志位
   }

   AMLED = am_led;       //状态灯,变化时写入
   ltkey = 1;
    }
  }
  else
  {
    ltkey = 0;
  }
 }

}
关键字:独立按键  驱动程序  扫描程序

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式