• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 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ī)安全性研究
    息烽县| 邮箱| 无锡市| 平潭县| 泸水县| 梁河县| 大冶市| 资溪县| 麟游县| 阿瓦提县| 开江县| 道孚县| 屏山县| 方城县| 桂阳县| 秭归县| 六安市| 呼伦贝尔市| 松溪县| 涿州市| 出国| 天峨县| 阜阳市| 密云县| 曲松县| 阳江市| 海林市| 迭部县| 新密市| 山西省| 遂溪县| 伊川县| 青神县| 偏关县| 类乌齐县| 阳新县| 台北市| 苍溪县| 楚雄市| 宁国市| 潞城市|