久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

單片機按鍵檢測函數

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年02月18日   【字體:

 /*******************************************************************
 函數功能:判斷某一按鍵的狀態;
 返回值:0x00-未按鍵,0x01-短按鍵,0x02-長按鍵;(本程序不設連發功能)
 注意:本長短按鍵是在同一按鍵上實現;
 長按鍵是持續按下2秒后認為是長按鍵,此時可以執行按鍵功能程序,必須釋放
 按鍵后才可以再次執行按鍵判斷;
 短按鍵是按下時間在2秒以內并釋放的為短按鍵,含20ms的防抖,按鍵執行是在
 按鍵釋放后執行的;
 為了定時方便,本函數是每10ms執行一次的,如果執行周期有變,注意更改相
 關變量。
 (可以將此函數以結構體形式擴展為多個通道檢測,本處測試函數未做。)
********************************************************************/
uchar get_sw_state(void)
{
  static uchar count=0; //按鍵狀態計時;
 static uchar long_key=0; //長按鍵標志;
 static uchar t50ms_for_err=0; //50ms防釋放干擾或人認抖動,即有按鍵時,須檢測到釋放時間達到50ms才認為真的是釋放;
 uchar value_tmp=0x00; //鍵值;
 
  if(NO_SWITCH)
    {
  if(t50ms_for_err!=0) t50ms_for_err--;
  if(0==t50ms_for_err) //確實釋放;
  {
   if(0==long_key) //不可省,防止按鍵一直不放,count從TOP值又到了BOTTOM重新計數;
   {
    if(count<2) value_tmp=0x00; //防抖;
    else if(count<200) value_tmp=0x01; //2秒以內釋放為短按鍵;
   }
   count=0; //計數清零;
   long_key=0;
  }
 }
 else
 {
  count++;
  if(count>2) t50ms_for_err=5;
  if((200==count)&&(0==long_key))
  {
   long_key=1;
   value_tmp=0x02;
  }
 }
 return value_tmp;
}

關閉窗口

相關文章

主站蜘蛛池模板: 欧美黄色一区 | 9191av| 亚洲精品一区二区三区四区高清 | 91精品国产一区二区三区 | 欧美一区二区三区四区视频 | 人人艹人人 | 国产精品成人一区二区 | 91精品国产高清一区二区三区 | 麻豆av免费观看 | 天天天操天天天干 | av天天干 | 国产精品不卡一区 | 国产乱肥老妇国产一区二 | 99视频在线| 性xxxxx | 国产精品99 | 国产成人精品一区二区三区在线 | 欧美中文字幕一区 | 91久久| 97影院在线午夜 | 国产精品视频免费 | 91精品91久久久 | 亚洲三级免费看 | 国产一区二区三区精品久久久 | 久久久久成人精品免费播放动漫 | 亚洲国产精品视频 | 欧美久久一区二区 | 久久久久久毛片免费观看 | 色婷婷亚洲国产女人的天堂 | 久久精品欧美一区二区三区不卡 | 成人日b视频 | 亚洲系列第一页 | 国产二区视频 | 日日噜噜噜夜夜爽爽狠狠视频, | 中文字幕在线一区 | 日韩手机视频 | 免费在线国产视频 | 日韩精品一区中文字幕 | 91日日| 精品久久久久久久久久 | 亚洲成av人影片在线观看 |