<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一個經(jīng)典的按鍵掃描程序

          一個經(jīng)典的按鍵掃描程序

          作者: 時間:2016-11-17 來源:網(wǎng)絡(luò) 收藏
          按鍵是比較復(fù)雜??梢杂?strong>狀態(tài)機表示。

          每10mS執(zhí)行一次鍵盤掃描任務(wù)

          本文引用地址:http://www.ex-cimer.com/article/201611/315486.htm

          0、無鍵,若有鍵進入狀態(tài)1

          1、第一次檢到有鍵。若有鍵進入狀態(tài)2,同時將鍵值送緩沖區(qū)。 若無鍵進入狀態(tài)0。

          2、若有鍵則計時,按鍵超過300ms進入狀態(tài)3,同時將鍵值送緩沖區(qū)。 若無鍵進入狀態(tài)1。

          表示第一次按鍵后如果長按鍵則300ms后認為有一次按鍵。

          3、若有鍵則計時,按鍵超過200ms則將鍵值送緩沖區(qū)。 若無鍵進入狀態(tài)1。

          表示長按鍵則以后每200ms后認為有一次按鍵。

          void KeyScan() //每10mS執(zhí)行一次鍵盤掃描任務(wù)

          {

          switch(KeyState)

          {

          case 0:

          if(KeyIsKeyDown()) //有鍵

          {

          KeyState = 1;

          }

          break;

          case 1:

          if(KeyIsKeyDown()) //有鍵

          {

          KeyState = 2;

          KeyBufIn(); //將鍵值送緩沖區(qū)

          KeyStartRptCnt = 0;

          }

          else

          {

          KeyState = 0;

          }

          break;

          case 2:

          if(KeyIsKeyDown()) //有鍵

          {

          if(KeyStartRptCnt++ >= 30)

          {

          KeyState = 3;

          KeyRptCnt = 0;

          KeyBufIn();

          }

          }

          else

          {

          KeyState = 1;

          }

          break;

          case 3:

          if(KeyIsKeyDown()) //有鍵

          {

          if(KeyRptCnt++ >= 20)

          {

          KeyRptCnt = 0;

          KeyBufIn();

          }

          }

          else

          {

          KeyState = 1;

          }

          break;

          default:

          break;

          }

          }



          關(guān)鍵詞: 按鍵掃描狀態(tài)

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();