新聞中心

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

一個經典的按鍵掃描程序

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

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

本文引用地址:http://m.butianyuan.cn/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í)行一次鍵盤掃描任務

{

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;

}

}



評論


技術專區(qū)

關閉