孔憲青
摘要:介紹了一種C51下的按鍵檢測(cè)方式,并給出了程序的運(yùn)行方法。
關(guān)鍵詞:節(jié)拍控制;按鍵檢測(cè)
中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8154-02
用C語(yǔ)言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測(cè)是必須的。傳統(tǒng)的最簡(jiǎn)單的按鍵檢測(cè)就是使用延時(shí)去抖動(dòng),而去抖動(dòng)的10ms左右時(shí)間是必須要通過(guò)指令來(lái)執(zhí)行的。通過(guò)一個(gè)定時(shí)器能實(shí)現(xiàn)的單片機(jī)節(jié)拍控制是無(wú)操作系統(tǒng)下最簡(jiǎn)單的任務(wù)管理模式,如果按鍵檢測(cè)也使用這個(gè)節(jié)拍,可以使這10ms的時(shí)間也節(jié)省出來(lái),可提高了CPU的運(yùn)行效率,縮短了總線(xiàn)周期。
1 節(jié)拍控制實(shí)現(xiàn)對(duì)程序的事件處理和并行時(shí)序分配
通過(guò)狀態(tài)機(jī)檢測(cè)按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時(shí)間單位,它是以事件為中心的編程思想。因此必須把檢測(cè)按鍵變成事件來(lái)處理,而節(jié)拍控制是單片機(jī)實(shí)現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測(cè)就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個(gè)定時(shí)中斷來(lái)產(chǎn)生節(jié)拍,例如AT89S52的16位定時(shí)器T2,設(shè)置T2為自動(dòng)重裝,然后每5ms產(chǎn)生一個(gè)節(jié)拍。這樣在程序前臺(tái)[1]有一個(gè)節(jié)拍來(lái)控制任務(wù)的執(zhí)行。見(jiàn)下面程序:
1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個(gè)數(shù)由并行模塊的數(shù)量決定
2) 設(shè)置節(jié)拍
3) 中斷方式激活節(jié)拍
4) 控制并行模塊while(1)
節(jié)拍控制要占用一個(gè)定時(shí)器產(chǎn)生節(jié)拍,定時(shí)器設(shè)置為低級(jí)。通過(guò)節(jié)拍的并行模式不是一個(gè)真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時(shí)間軸的點(diǎn)上,任務(wù)就類(lèi)似并行序列。
2 按鍵的檢測(cè)
傳統(tǒng)按鍵檢測(cè)就是加延時(shí)去掉抖動(dòng)。類(lèi)似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測(cè)按鍵是要求利用節(jié)拍來(lái)檢測(cè),節(jié)拍如果5ms一次。那么當(dāng)檢測(cè)到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來(lái)時(shí)候,再去檢測(cè)。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因?yàn)檫@時(shí)候的去抖動(dòng)是靠節(jié)拍的間隔來(lái)是實(shí)現(xiàn)的,中間這段時(shí)間別空閑給CPU利用。對(duì)于按鍵來(lái)說(shuō),是通過(guò)狀態(tài)機(jī)方式來(lái)運(yùn)行的狀態(tài)機(jī)檢測(cè)方式,具體運(yùn)行模式見(jiàn)狀態(tài)機(jī)結(jié)構(gòu)圖1:
3 結(jié)束語(yǔ)
按鍵檢測(cè)是智能儀表最常用的,在快速響應(yīng)的場(chǎng)合按鍵的檢測(cè)需要浪費(fèi)10~20ms的時(shí)間,如果按鍵很多,勢(shì)必造成大量無(wú)用的延時(shí)。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測(cè)按鍵,使用了并行程序設(shè)計(jì)中的狀態(tài)機(jī)思想。其中要點(diǎn)是建立狀態(tài)機(jī)函數(shù),這種組織形式為類(lèi)似的程序處理也提供了參考。
參考文獻(xiàn):
[1] 侯殿有. 基于八位單片機(jī)的C語(yǔ)言程序設(shè)計(jì)[M]. 北京:北京大學(xué)出版社,2012.endprint
摘要:介紹了一種C51下的按鍵檢測(cè)方式,并給出了程序的運(yùn)行方法。
關(guān)鍵詞:節(jié)拍控制;按鍵檢測(cè)
中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8154-02
用C語(yǔ)言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測(cè)是必須的。傳統(tǒng)的最簡(jiǎn)單的按鍵檢測(cè)就是使用延時(shí)去抖動(dòng),而去抖動(dòng)的10ms左右時(shí)間是必須要通過(guò)指令來(lái)執(zhí)行的。通過(guò)一個(gè)定時(shí)器能實(shí)現(xiàn)的單片機(jī)節(jié)拍控制是無(wú)操作系統(tǒng)下最簡(jiǎn)單的任務(wù)管理模式,如果按鍵檢測(cè)也使用這個(gè)節(jié)拍,可以使這10ms的時(shí)間也節(jié)省出來(lái),可提高了CPU的運(yùn)行效率,縮短了總線(xiàn)周期。
1 節(jié)拍控制實(shí)現(xiàn)對(duì)程序的事件處理和并行時(shí)序分配
通過(guò)狀態(tài)機(jī)檢測(cè)按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時(shí)間單位,它是以事件為中心的編程思想。因此必須把檢測(cè)按鍵變成事件來(lái)處理,而節(jié)拍控制是單片機(jī)實(shí)現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測(cè)就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個(gè)定時(shí)中斷來(lái)產(chǎn)生節(jié)拍,例如AT89S52的16位定時(shí)器T2,設(shè)置T2為自動(dòng)重裝,然后每5ms產(chǎn)生一個(gè)節(jié)拍。這樣在程序前臺(tái)[1]有一個(gè)節(jié)拍來(lái)控制任務(wù)的執(zhí)行。見(jiàn)下面程序:
1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個(gè)數(shù)由并行模塊的數(shù)量決定
2) 設(shè)置節(jié)拍
3) 中斷方式激活節(jié)拍
4) 控制并行模塊while(1)
節(jié)拍控制要占用一個(gè)定時(shí)器產(chǎn)生節(jié)拍,定時(shí)器設(shè)置為低級(jí)。通過(guò)節(jié)拍的并行模式不是一個(gè)真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時(shí)間軸的點(diǎn)上,任務(wù)就類(lèi)似并行序列。
2 按鍵的檢測(cè)
傳統(tǒng)按鍵檢測(cè)就是加延時(shí)去掉抖動(dòng)。類(lèi)似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測(cè)按鍵是要求利用節(jié)拍來(lái)檢測(cè),節(jié)拍如果5ms一次。那么當(dāng)檢測(cè)到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來(lái)時(shí)候,再去檢測(cè)。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因?yàn)檫@時(shí)候的去抖動(dòng)是靠節(jié)拍的間隔來(lái)是實(shí)現(xiàn)的,中間這段時(shí)間別空閑給CPU利用。對(duì)于按鍵來(lái)說(shuō),是通過(guò)狀態(tài)機(jī)方式來(lái)運(yùn)行的狀態(tài)機(jī)檢測(cè)方式,具體運(yùn)行模式見(jiàn)狀態(tài)機(jī)結(jié)構(gòu)圖1:
3 結(jié)束語(yǔ)
按鍵檢測(cè)是智能儀表最常用的,在快速響應(yīng)的場(chǎng)合按鍵的檢測(cè)需要浪費(fèi)10~20ms的時(shí)間,如果按鍵很多,勢(shì)必造成大量無(wú)用的延時(shí)。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測(cè)按鍵,使用了并行程序設(shè)計(jì)中的狀態(tài)機(jī)思想。其中要點(diǎn)是建立狀態(tài)機(jī)函數(shù),這種組織形式為類(lèi)似的程序處理也提供了參考。
參考文獻(xiàn):
[1] 侯殿有. 基于八位單片機(jī)的C語(yǔ)言程序設(shè)計(jì)[M]. 北京:北京大學(xué)出版社,2012.endprint
摘要:介紹了一種C51下的按鍵檢測(cè)方式,并給出了程序的運(yùn)行方法。
關(guān)鍵詞:節(jié)拍控制;按鍵檢測(cè)
中圖分類(lèi)號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8154-02
用C語(yǔ)言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測(cè)是必須的。傳統(tǒng)的最簡(jiǎn)單的按鍵檢測(cè)就是使用延時(shí)去抖動(dòng),而去抖動(dòng)的10ms左右時(shí)間是必須要通過(guò)指令來(lái)執(zhí)行的。通過(guò)一個(gè)定時(shí)器能實(shí)現(xiàn)的單片機(jī)節(jié)拍控制是無(wú)操作系統(tǒng)下最簡(jiǎn)單的任務(wù)管理模式,如果按鍵檢測(cè)也使用這個(gè)節(jié)拍,可以使這10ms的時(shí)間也節(jié)省出來(lái),可提高了CPU的運(yùn)行效率,縮短了總線(xiàn)周期。
1 節(jié)拍控制實(shí)現(xiàn)對(duì)程序的事件處理和并行時(shí)序分配
通過(guò)狀態(tài)機(jī)檢測(cè)按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時(shí)間單位,它是以事件為中心的編程思想。因此必須把檢測(cè)按鍵變成事件來(lái)處理,而節(jié)拍控制是單片機(jī)實(shí)現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測(cè)就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個(gè)定時(shí)中斷來(lái)產(chǎn)生節(jié)拍,例如AT89S52的16位定時(shí)器T2,設(shè)置T2為自動(dòng)重裝,然后每5ms產(chǎn)生一個(gè)節(jié)拍。這樣在程序前臺(tái)[1]有一個(gè)節(jié)拍來(lái)控制任務(wù)的執(zhí)行。見(jiàn)下面程序:
1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個(gè)數(shù)由并行模塊的數(shù)量決定
2) 設(shè)置節(jié)拍
3) 中斷方式激活節(jié)拍
4) 控制并行模塊while(1)
節(jié)拍控制要占用一個(gè)定時(shí)器產(chǎn)生節(jié)拍,定時(shí)器設(shè)置為低級(jí)。通過(guò)節(jié)拍的并行模式不是一個(gè)真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時(shí)間軸的點(diǎn)上,任務(wù)就類(lèi)似并行序列。
2 按鍵的檢測(cè)
傳統(tǒng)按鍵檢測(cè)就是加延時(shí)去掉抖動(dòng)。類(lèi)似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測(cè)按鍵是要求利用節(jié)拍來(lái)檢測(cè),節(jié)拍如果5ms一次。那么當(dāng)檢測(cè)到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來(lái)時(shí)候,再去檢測(cè)。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因?yàn)檫@時(shí)候的去抖動(dòng)是靠節(jié)拍的間隔來(lái)是實(shí)現(xiàn)的,中間這段時(shí)間別空閑給CPU利用。對(duì)于按鍵來(lái)說(shuō),是通過(guò)狀態(tài)機(jī)方式來(lái)運(yùn)行的狀態(tài)機(jī)檢測(cè)方式,具體運(yùn)行模式見(jiàn)狀態(tài)機(jī)結(jié)構(gòu)圖1:
3 結(jié)束語(yǔ)
按鍵檢測(cè)是智能儀表最常用的,在快速響應(yīng)的場(chǎng)合按鍵的檢測(cè)需要浪費(fèi)10~20ms的時(shí)間,如果按鍵很多,勢(shì)必造成大量無(wú)用的延時(shí)。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測(cè)按鍵,使用了并行程序設(shè)計(jì)中的狀態(tài)機(jī)思想。其中要點(diǎn)是建立狀態(tài)機(jī)函數(shù),這種組織形式為類(lèi)似的程序處理也提供了參考。
參考文獻(xiàn):
[1] 侯殿有. 基于八位單片機(jī)的C語(yǔ)言程序設(shè)計(jì)[M]. 北京:北京大學(xué)出版社,2012.endprint