a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機程序設計中狀態機思路的應用

單片機程序設計中狀態機思路的應用

作者: 時間:2012-07-18 來源:網絡 收藏

機的概念
機是軟件編程中的一個重要概念。比這個概念更重要的是對它的靈活。在一個清晰而且高效的程序中,必然有機的身影浮現。

本文引用地址:http://www.j9360.com/article/171145.htm


比如說一個按鍵命令解析程序,就可以被看做狀態機:本來在A狀態下,觸發一個按鍵后切換到了B狀態;再觸發另一個鍵后切換到C狀態,或者返回到A狀態。這就是最簡單的按鍵狀態機例子。實際的按鍵解析程序會比這更復雜些,但這不影響我們對狀態機的認識。


進一步看,擊鍵動作本身也可以看做一個狀態機。一個細小的擊鍵動作包含了:釋放、抖動、閉合、抖動和重新釋放等狀態。


同樣,一個串行通信的時序(不管它是遵循何種協議,標準串口也好、I2C也好;也不管它是有線的、還是紅外的、無線的)也都可以看做由一系列有限的狀態構成。


顯示掃描程序也是狀態機;通信命令解析程序也是狀態機;甚至連繼電器的吸合/釋放控制、發光管(LED)的亮/滅控制又何嘗不是個狀態機。


當我們打開,把狀態機作為一種思想導入到程序中去時,就會找到解決問題的一條有效的捷徑。有時候用狀態機的思維去思考程序該干什么,比用控制流程的思維去思考,可能會更有效。這樣一來狀態機便有了更實際的功用。


程序其實就是狀態機。


也許你還不理解上面這句話。請想想看,計算機的大廈不就是建立在“0”和“1”兩個基本狀態的地基之上么?

狀態機的要素
狀態機可歸納為4個要素,即現態、條件、動作、次態。這樣的歸納,主要是出于對狀態機的內在因果關系的考慮。“現態”和“條件”是因,“動作”和“次態”是果。詳解如下:


①現態:是指當前所處的狀態。


②條件:又稱為“事件”。當一個條件被滿足,將會觸發一個動作,或者執行一次狀態的遷移。


③動作:條件滿足后執行的動作。動作執行完畢后,可以遷移到新的狀態,也可以仍舊保持原狀態。動作不是必需的,當條件滿足后,也可以不執行任何動作,直接遷移到新狀態。


④次態:條件滿足后要遷往的新狀態。“次態”是相對于“現態”而言的,“次態”一旦被激活,就轉變成新的“現態”了。


如果我們進一步歸納,把“現態”和“次態”統一起來,而把“動作”忽略(降格處理),則只剩下兩個最關鍵的要素,即:狀態、遷移條件。


狀態機的表示方法有許多種,我們可以用文字、圖形或表格的形式來表示一個狀態機。


純粹用文字描述是很低效的,所以就不介紹了。接下來先介紹圖形的方式。

狀態遷移圖(STD)
狀態遷移圖(STD),是一種描述系統的狀態、以及相互轉化關系的圖形方式。狀態遷移圖的畫法有許多種,不過一般都大同小異。我們結合一個例子來說明一下它的畫法,如圖1所示。

圖1 狀態遷移圖


①狀態框:用方框表示狀態,包括所謂的“現態”和“次態”。

②條件及遷移箭頭:用箭頭表示狀態遷移的方向,并在該箭頭上標注觸發條件。


③節點圓圈:當多個箭頭指向一個狀態時,可以用節點符號(小圓圈)連接匯總。


④動作框:用橢圓框表示。


⑤附加條件判斷框:用六角菱形框表示。


狀態遷移圖和我們常見的流程圖相比有著本質的區別,具體體現為:在流程圖中,箭頭代表了程序PC指針的跳轉;而在狀態遷移圖中,箭頭代表的是狀態的改變。


我們會發現,這種狀態遷移圖比普通程序流程圖更簡練、直觀、易懂。這正是我們需要達到的目的。

狀態遷移表
除了狀態遷移圖,我們還可以用表格的形式來表示狀態之間的關系。這種表一般稱為狀態遷移表。


表1就是前面介紹的那張狀態遷移圖的另一種描述形式。

表1 狀態遷移表


①采用表格方式來描述狀態機,優點是可容納更多的文字信息。例如,我們不但可以在狀態遷移表中描述狀態的遷移關系,還可以把每個狀態的特征描述也包含在內。


②如果表格內容較多,過于臃腫不利于閱讀,我們也可以將狀態遷移表進行拆分。經過拆分后的表格根據其具體內容,表格名稱也有所變化。


③比如,我們可以把狀態特征和遷移關系分開列表。被單獨拆分出來的描述狀態特征的表格,也可以稱為“狀態真值表”。這其中比較常見的就是把每個狀態的顯示內容單獨列表。這種描述每個狀態顯示內容的表稱之為“顯示真值表”。同樣,我們把單獨表述基于按鍵的狀態遷移表稱為“按鍵功能真值表”。另外,如果每一個狀態包含的信息量過多,我們也可以把每個狀態單獨列表。


④由此可見,狀態遷移表作為狀態遷移圖的有益補充,它的表現形式是靈活的。


⑤狀態遷移表優點是信息涵蓋面大,缺點是視覺上不夠直觀,因此它并不能取代狀態遷移圖。比較理想的是將圖形和表格結合。用圖形展現宏觀,用表格說明細節。二者互為參照,相得益彰。

用狀態機實現一個時鐘程序
接下來,我將就狀態機的,結合流程圖、狀態遷移圖和狀態遷移,舉一個實際例子。下面這張圖是一個時鐘程序的狀態遷移圖,如圖2所示。


上一頁 1 2 下一頁

評論


相關推薦

技術專區

關閉