機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
“零耗時(shí)鍵盤”
“零耗時(shí)鍵盤”
 更新時(shí)間:2009-7-28 16:18:52  點(diǎn)擊數(shù):0
【字體: 字體顏色

“零耗時(shí)鍵盤”介紹:
    “零耗時(shí)”并非不耗時(shí)。它主要是將原本需要延時(shí)消除鍵盤抖動(dòng)的時(shí)間轉(zhuǎn)化為對(duì)定時(shí)器的計(jì)數(shù)來(lái)替代。這樣就可將節(jié)約的時(shí)間用于對(duì)其他事件的處理。
    “零耗時(shí)”鍵盤程序的編寫很簡(jiǎn)單,首先要做到:
    1.用總鍵盤個(gè)數(shù)除消除鍵盤抖動(dòng)的時(shí)間20mS.本例有4個(gè)鍵,即20mS/4=5mS。  所以,定時(shí)器0中斷時(shí)間常數(shù)應(yīng)該定義為5mS.
    2.設(shè)置1個(gè)壓鍵20mS計(jì)數(shù)器數(shù)組KeyPressCount[]。用于對(duì)各鍵盤的壓鍵次數(shù)計(jì)數(shù)。  由于全部鍵盤掃描需要20mS,故KeyPressCount[]內(nèi)的值為20mS的倍數(shù)。
    3.設(shè)置1個(gè)鍵掃描位置計(jì)數(shù)器KeyCount,用于記錄當(dāng)前鍵掃描的位置。  注意鍵掃描函數(shù)KeyScan()每次只掃描1個(gè)鍵(本例即為IRQ_Timer0())。
    4.設(shè)置1個(gè)鍵掃描鍵值計(jì)數(shù)器數(shù)組KeyDblCount[],用于記錄鍵值以處理雙擊狀態(tài)。  本例主要講解“零耗時(shí)”鍵盤程序的編寫,一般不主張?jiān)贛CU系統(tǒng)下用雙擊鍵。多建議采用長(zhǎng)壓鍵來(lái)替代雙擊鍵。

特別注意:
  “零耗時(shí)”鍵盤程序?qū)儆?ldquo;掃而不描”類型,即每次只掃描1個(gè)鍵而不管其他鍵的狀態(tài)。這樣就可在一定的時(shí)間范圍內(nèi)“并行”地處理多個(gè)鍵盤事件。鍵掃描位置計(jì)數(shù)器KeyCount的值就是鍵盤掃描結(jié)果的鍵值。故也改進(jìn)了經(jīng)典的鍵掃描函數(shù)KeyScan()需要逐次掃描的缺點(diǎn)
    “零耗時(shí)”鍵盤程序只區(qū)分鍵釋放,單擊鍵,雙擊鍵 和長(zhǎng)壓鍵4種基本事件。區(qū)分只簡(jiǎn)單地判別KeyPressCount[]的個(gè)數(shù)即可。
    1.當(dāng)無(wú)鍵壓下且KeyPressCount[]減到0時(shí),可判別為鍵釋放事件發(fā)生。
    2.當(dāng)有鍵壓下且KeyPressCount[]=2時(shí),可認(rèn)為鍵已經(jīng)經(jīng)過(guò)20mS消抖處理,即單擊鍵事件發(fā)生。如果需要雙擊鍵處理,則需要附加KeyDblCount[]雙擊鍵計(jì)數(shù)器數(shù)組。
    3.當(dāng)有鍵壓下且KeyPressCount[]=3*50時(shí),即3*50*20mS=3S時(shí),認(rèn)為3S長(zhǎng)壓鍵事件發(fā)生。

對(duì)“零耗時(shí)鍵盤”的個(gè)人應(yīng)用總結(jié):
    在MCU的裸奔中,“零耗時(shí)鍵盤”很容易構(gòu)成一個(gè)基于時(shí)間片小型的操作系統(tǒng)。它可以“并行地”處理多個(gè)鍵盤事件及任務(wù)。它的節(jié)拍不是OS常用的10mS,而是20mS消抖時(shí)間的1/N份。由于20mS也做為視覺暫留的時(shí)間基準(zhǔn),故在常用的LED+KEY系統(tǒng)中裸奔表現(xiàn)很不錯(cuò)。如果每個(gè)任務(wù)都能保證在20mS/N內(nèi)完成,那么后臺(tái)程序可以廢除,即主程序只是個(gè)死循環(huán)。這在低功耗系統(tǒng)中應(yīng)用很廣。

  • 上一篇: 組裝印制電路板的檢測(cè)
  • 下一篇: 數(shù)字電路設(shè)計(jì)的抗干擾考慮
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1