• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于有限狀態(tài)機(jī)的按鍵檢測

      2015-01-06 05:14:15孔憲青
      電腦知識與技術(shù) 2014年34期
      關(guān)鍵詞:狀態(tài)機(jī)按鍵延時

      孔憲青

      摘要:介紹了一種C51下的按鍵檢測方式,并給出了程序的運行方法。

      關(guān)鍵詞:節(jié)拍控制;按鍵檢測

      中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)34-8154-02

      用C語言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測是必須的。傳統(tǒng)的最簡單的按鍵檢測就是使用延時去抖動,而去抖動的10ms左右時間是必須要通過指令來執(zhí)行的。通過一個定時器能實現(xiàn)的單片機(jī)節(jié)拍控制是無操作系統(tǒng)下最簡單的任務(wù)管理模式,如果按鍵檢測也使用這個節(jié)拍,可以使這10ms的時間也節(jié)省出來,可提高了CPU的運行效率,縮短了總線周期。

      1 節(jié)拍控制實現(xiàn)對程序的事件處理和并行時序分配

      通過狀態(tài)機(jī)檢測按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時間單位,它是以事件為中心的編程思想。因此必須把檢測按鍵變成事件來處理,而節(jié)拍控制是單片機(jī)實現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個定時中斷來產(chǎn)生節(jié)拍,例如AT89S52的16位定時器T2,設(shè)置T2為自動重裝,然后每5ms產(chǎn)生一個節(jié)拍。這樣在程序前臺[1]有一個節(jié)拍來控制任務(wù)的執(zhí)行。見下面程序:

      1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個數(shù)由并行模塊的數(shù)量決定

      2) 設(shè)置節(jié)拍

      3) 中斷方式激活節(jié)拍

      4) 控制并行模塊while(1)

      節(jié)拍控制要占用一個定時器產(chǎn)生節(jié)拍,定時器設(shè)置為低級。通過節(jié)拍的并行模式不是一個真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時間軸的點上,任務(wù)就類似并行序列。

      2 按鍵的檢測

      傳統(tǒng)按鍵檢測就是加延時去掉抖動。類似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測按鍵是要求利用節(jié)拍來檢測,節(jié)拍如果5ms一次。那么當(dāng)檢測到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來時候,再去檢測。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因為這時候的去抖動是靠節(jié)拍的間隔來是實現(xiàn)的,中間這段時間別空閑給CPU利用。對于按鍵來說,是通過狀態(tài)機(jī)方式來運行的狀態(tài)機(jī)檢測方式,具體運行模式見狀態(tài)機(jī)結(jié)構(gòu)圖1:

      3 結(jié)束語

      按鍵檢測是智能儀表最常用的,在快速響應(yīng)的場合按鍵的檢測需要浪費10~20ms的時間,如果按鍵很多,勢必造成大量無用的延時。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測按鍵,使用了并行程序設(shè)計中的狀態(tài)機(jī)思想。其中要點是建立狀態(tài)機(jī)函數(shù),這種組織形式為類似的程序處理也提供了參考。

      參考文獻(xiàn):

      [1] 侯殿有. 基于八位單片機(jī)的C語言程序設(shè)計[M]. 北京:北京大學(xué)出版社,2012.endprint

      摘要:介紹了一種C51下的按鍵檢測方式,并給出了程序的運行方法。

      關(guān)鍵詞:節(jié)拍控制;按鍵檢測

      中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)34-8154-02

      用C語言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測是必須的。傳統(tǒng)的最簡單的按鍵檢測就是使用延時去抖動,而去抖動的10ms左右時間是必須要通過指令來執(zhí)行的。通過一個定時器能實現(xiàn)的單片機(jī)節(jié)拍控制是無操作系統(tǒng)下最簡單的任務(wù)管理模式,如果按鍵檢測也使用這個節(jié)拍,可以使這10ms的時間也節(jié)省出來,可提高了CPU的運行效率,縮短了總線周期。

      1 節(jié)拍控制實現(xiàn)對程序的事件處理和并行時序分配

      通過狀態(tài)機(jī)檢測按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時間單位,它是以事件為中心的編程思想。因此必須把檢測按鍵變成事件來處理,而節(jié)拍控制是單片機(jī)實現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個定時中斷來產(chǎn)生節(jié)拍,例如AT89S52的16位定時器T2,設(shè)置T2為自動重裝,然后每5ms產(chǎn)生一個節(jié)拍。這樣在程序前臺[1]有一個節(jié)拍來控制任務(wù)的執(zhí)行。見下面程序:

      1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個數(shù)由并行模塊的數(shù)量決定

      2) 設(shè)置節(jié)拍

      3) 中斷方式激活節(jié)拍

      4) 控制并行模塊while(1)

      節(jié)拍控制要占用一個定時器產(chǎn)生節(jié)拍,定時器設(shè)置為低級。通過節(jié)拍的并行模式不是一個真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時間軸的點上,任務(wù)就類似并行序列。

      2 按鍵的檢測

      傳統(tǒng)按鍵檢測就是加延時去掉抖動。類似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測按鍵是要求利用節(jié)拍來檢測,節(jié)拍如果5ms一次。那么當(dāng)檢測到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來時候,再去檢測。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因為這時候的去抖動是靠節(jié)拍的間隔來是實現(xiàn)的,中間這段時間別空閑給CPU利用。對于按鍵來說,是通過狀態(tài)機(jī)方式來運行的狀態(tài)機(jī)檢測方式,具體運行模式見狀態(tài)機(jī)結(jié)構(gòu)圖1:

      3 結(jié)束語

      按鍵檢測是智能儀表最常用的,在快速響應(yīng)的場合按鍵的檢測需要浪費10~20ms的時間,如果按鍵很多,勢必造成大量無用的延時。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測按鍵,使用了并行程序設(shè)計中的狀態(tài)機(jī)思想。其中要點是建立狀態(tài)機(jī)函數(shù),這種組織形式為類似的程序處理也提供了參考。

      參考文獻(xiàn):

      [1] 侯殿有. 基于八位單片機(jī)的C語言程序設(shè)計[M]. 北京:北京大學(xué)出版社,2012.endprint

      摘要:介紹了一種C51下的按鍵檢測方式,并給出了程序的運行方法。

      關(guān)鍵詞:節(jié)拍控制;按鍵檢測

      中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2014)34-8154-02

      用C語言在Keil軟件上進(jìn)行單片機(jī)程序的編輯是常用的,其中按鍵檢測是必須的。傳統(tǒng)的最簡單的按鍵檢測就是使用延時去抖動,而去抖動的10ms左右時間是必須要通過指令來執(zhí)行的。通過一個定時器能實現(xiàn)的單片機(jī)節(jié)拍控制是無操作系統(tǒng)下最簡單的任務(wù)管理模式,如果按鍵檢測也使用這個節(jié)拍,可以使這10ms的時間也節(jié)省出來,可提高了CPU的運行效率,縮短了總線周期。

      1 節(jié)拍控制實現(xiàn)對程序的事件處理和并行時序分配

      通過狀態(tài)機(jī)檢測按鍵,必須使用節(jié)拍控制。狀態(tài)機(jī)不是連續(xù)的時間單位,它是以事件為中心的編程思想。因此必須把檢測按鍵變成事件來處理,而節(jié)拍控制是單片機(jī)實現(xiàn)多任務(wù)處理最好的方式,因此按鍵檢測就可以融合到節(jié)拍控制中。Main.c文件內(nèi)部while(1){……}采用一個定時中斷來產(chǎn)生節(jié)拍,例如AT89S52的16位定時器T2,設(shè)置T2為自動重裝,然后每5ms產(chǎn)生一個節(jié)拍。這樣在程序前臺[1]有一個節(jié)拍來控制任務(wù)的執(zhí)行。見下面程序:

      1) 定義節(jié)拍 char beat[3]=0; //全局節(jié)拍的個數(shù)由并行模塊的數(shù)量決定

      2) 設(shè)置節(jié)拍

      3) 中斷方式激活節(jié)拍

      4) 控制并行模塊while(1)

      節(jié)拍控制要占用一個定時器產(chǎn)生節(jié)拍,定時器設(shè)置為低級。通過節(jié)拍的并行模式不是一個真正的并行結(jié)構(gòu)。單片機(jī)指令執(zhí)行是串行的,但宏觀上節(jié)拍的引入,使事件或任務(wù)的發(fā)生僅僅出現(xiàn)在時間軸的點上,任務(wù)就類似并行序列。

      2 按鍵的檢測

      傳統(tǒng)按鍵檢測就是加延時去掉抖動。類似這樣的:if(kex){ delay(xxx);if(key){……}}。狀態(tài)機(jī)檢測按鍵是要求利用節(jié)拍來檢測,節(jié)拍如果5ms一次。那么當(dāng)檢測到按鍵的第一次數(shù)值進(jìn)行保存,當(dāng)?shù)诙喂?jié)拍到來時候,再去檢測。比較前后兩次的鍵值,如果相同則進(jìn)入任務(wù)執(zhí)行。因為這時候的去抖動是靠節(jié)拍的間隔來是實現(xiàn)的,中間這段時間別空閑給CPU利用。對于按鍵來說,是通過狀態(tài)機(jī)方式來運行的狀態(tài)機(jī)檢測方式,具體運行模式見狀態(tài)機(jī)結(jié)構(gòu)圖1:

      3 結(jié)束語

      按鍵檢測是智能儀表最常用的,在快速響應(yīng)的場合按鍵的檢測需要浪費10~20ms的時間,如果按鍵很多,勢必造成大量無用的延時。該文從狀態(tài)機(jī)編程思想出發(fā),介紹在節(jié)拍控制下如何組織和檢測按鍵,使用了并行程序設(shè)計中的狀態(tài)機(jī)思想。其中要點是建立狀態(tài)機(jī)函數(shù),這種組織形式為類似的程序處理也提供了參考。

      參考文獻(xiàn):

      [1] 侯殿有. 基于八位單片機(jī)的C語言程序設(shè)計[M]. 北京:北京大學(xué)出版社,2012.endprint

      猜你喜歡
      狀態(tài)機(jī)按鍵延時
      基于有限狀態(tài)機(jī)的按鍵檢測程序設(shè)計
      電子制作(2021年3期)2021-06-16 03:14:26
      基于級聯(lián)步進(jìn)延時的順序等效采樣方法及實現(xiàn)
      基于有限狀態(tài)機(jī)的交會對接飛行任務(wù)規(guī)劃方法
      一種多方向?qū)Ч獍存I結(jié)構(gòu)設(shè)計
      電子制作(2016年1期)2016-11-07 08:43:05
      Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
      桑塔納車發(fā)動機(jī)延時熄火
      光控觸摸延時開關(guān)設(shè)計
      河南科技(2014年23期)2014-02-27 14:19:00
      按鍵的多種狀態(tài)檢測及消抖處理方法
      家電科技(2013年4期)2013-07-09 10:55:08
      解析某型號手機(jī)按鍵檢測程序的缺陷
      FPGA設(shè)計中狀態(tài)機(jī)安全性研究
      城口县| 襄城县| 哈密市| 桃源县| 吉林市| 西峡县| 庆安县| 三穗县| 石柱| 秭归县| 芦山县| 镇江市| 清涧县| 资兴市| 浦县| 北海市| 健康| 关岭| 太和县| 高密市| 遂溪县| 内江市| 廉江市| 辽源市| 岑溪市| 昌黎县| 亚东县| 雷波县| 建水县| 周口市| 盐源县| 万安县| 昌乐县| 亚东县| 鄯善县| 闽侯县| 南和县| 泸溪县| 阿图什市| 博乐市| 奇台县|