新聞中心

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

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

        作者: 時(shí)間:2016-11-17 來(lái)源:網(wǎng)絡(luò) 收藏
        按鍵是比較復(fù)雜。可以用狀態(tài)機(jī)表示。

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

        本文引用地址:http://www.104case.com/article/201611/315486.htm

        0、無(wú)鍵,若有鍵進(jìn)入狀態(tài)1

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

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

        表示第一次按鍵后如果長(zhǎng)按鍵則300ms后認(rèn)為有一次按鍵。

        3、若有鍵則計(jì)時(shí),按鍵超過(guò)200ms則將鍵值送緩沖區(qū)。 若無(wú)鍵進(jìn)入狀態(tài)1。

        表示長(zhǎng)按鍵則以后每200ms后認(rèn)為有一次按鍵。

        void KeyScan() //每10mS執(zhí)行一次鍵盤(pán)掃描任務(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)

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 青川县| 常德市| 呈贡县| 呼伦贝尔市| 平果县| 巩义市| 江口县| 修武县| 丰台区| 孝昌县| 阳新县| 左贡县| 栾城县| 克什克腾旗| 石河子市| 丽水市| 道真| 灵武市| 玉树县| 武安市| 博野县| 井研县| 义马市| 商都县| 扎赉特旗| 延安市| 益阳市| 永安市| 务川| 芦溪县| 锡林郭勒盟| 伊通| 新乡市| 新营市| 孝昌县| 开江县| 盐津县| 香港| 云和县| 昭通市| 科技|