摘 要:電子技術在不斷的發(fā)展更新,這在一定程度上使得單片機的編程必須提升其基本要求,而有限狀態(tài)機的運用能夠簡化程序中的判斷步驟,使程序的整體執(zhí)行時間得以縮短,從而提升單片機處理的時效性。
關鍵詞:單片機;編程;有限狀態(tài)機;應用
狀態(tài)機在對一些邏輯較為復雜或者實時性較強的問題的處理過程中具有一定的優(yōu)勢,有限狀態(tài)機屬于一類數(shù)學模型,它主要是通過某些有限的狀態(tài)或者在相關狀態(tài)之間的動作與轉(zhuǎn)移而構成的,此數(shù)學模型被廣泛的運用在系統(tǒng)分析與設計當中。有限狀態(tài)機的基本特性通常以描述控制為主,它在軟件中是一類比較常用的處理方式。有限狀態(tài)機運用于單片機程序中可以把相對復雜的事件分解成具體的穩(wěn)定狀態(tài),再利用外部事件將程序的狀態(tài)加以改變,并在此基礎上進行相關的操作處理。
一、什么是有限狀態(tài)機
有限狀態(tài)機一般依照規(guī)定的順序?qū)⑾嚓P的操作依次完成,它是由既定的數(shù)目的狀態(tài)以及數(shù)目之間的轉(zhuǎn)移所構成,系統(tǒng)無論在哪種情況下都只會處于給定狀態(tài)中的一個,受到外部事件的影響,狀態(tài)機也會給出一定的動作處理方式,并且還有可能會因狀態(tài)的變化而發(fā)生轉(zhuǎn)移。有限狀態(tài)機通常分為兩大類,即Melay狀態(tài)機與Moore狀態(tài)機,其中Melay狀態(tài)機的輸出除了與狀態(tài)有關聯(lián)外,同時還與輸入有密切的聯(lián)系,而Moore狀態(tài)機的輸出僅僅與狀態(tài)有關聯(lián)。
分析有限狀態(tài)機的相關要求,有限狀態(tài)機主要包含了四大要素,即動作、現(xiàn)態(tài)、次態(tài)以及條件。現(xiàn)態(tài)是指程序當前所處的具體狀態(tài),在可以滿足相關條件的基礎上,系統(tǒng)會執(zhí)行一次狀態(tài)或者一個動作的轉(zhuǎn)移。次態(tài)則是完全滿足條件之后所轉(zhuǎn)移的新狀態(tài),當次態(tài)被激活后將會變換成新的現(xiàn)態(tài)。有限狀態(tài)機的四大要素使得其中內(nèi)部狀態(tài)的基本因果狀態(tài)得以呈現(xiàn),條件與現(xiàn)態(tài)是因,動作與姿態(tài)為果。
一般情況下,有限狀態(tài)機以兩種表現(xiàn)方式呈現(xiàn)出來,其中一種為狀態(tài)轉(zhuǎn)移表另外一種為狀態(tài)轉(zhuǎn)移圖,這兩類方式都能有效展現(xiàn)出有限狀態(tài)機中的轉(zhuǎn)移關系。
二、程序的狀態(tài)轉(zhuǎn)移模型
在具體的工程運用當中,一般會采用單片機來達到調(diào)度與控制的目標,這是通過一類識別指令數(shù)據(jù),再針對指令的差異性來實現(xiàn)相關的控制。要想真正實現(xiàn)指令的識別與接收,則需要把每一個指令在接受的過程中當作一個具體的狀態(tài),也就是把每個特定的數(shù)據(jù)當成一個狀態(tài),如此,指令數(shù)據(jù)的接受工作將會在程序中顯示成從一個狀態(tài)跳轉(zhuǎn)至下一個狀態(tài)的情況,怎么實現(xiàn)狀態(tài)之間的有效轉(zhuǎn)移是完成指令數(shù)據(jù)接收的關鍵點,在實施的過程中將每一個狀態(tài)都對應具體的值,當程序運行時,通常判斷此前的狀態(tài)值再決定程序的基本走向,得到正確的處理方式后,再將此狀態(tài)值進行修改,以此來決定程序在下一個過程中的基本走向。通常情況下,單片機因為能夠有效提供靈活且豐富的尋址方式,為此,運用數(shù)據(jù)存儲區(qū)當中的相關字節(jié)對程序運行中的基本狀態(tài)加以存放,這使得指令數(shù)據(jù)的整個接收過程變?yōu)闋顟B(tài)轉(zhuǎn)移過程。
三、單片機程序中運用有限狀態(tài)機
在上述描述中我們得知運用狀態(tài)機實現(xiàn)程序的轉(zhuǎn)移工作在一定程度上能夠有效縮短判斷步驟,可以從下面的工程實例加以了解。MCS51單片機運用串品對指令數(shù)據(jù)進行接收,或者在主程序中進行,針對不同的指令來完成對應的操作任務。比如,單片機需要接收兩條指令,具體的通信格式請參見表1、表2。當接收到指令1之后才能展開第一階段的工作,工作的具體方式主要以數(shù)據(jù)1N實施,在接收至指令2之后再展開第二階段的工作,具體的工作方式也以數(shù)據(jù)1M實施。
狀態(tài)機的主要特點在于具有較多的狀態(tài),在運行程序時,通過對狀態(tài)值的判斷才可以真正判斷此次程序的基本走向,當狀態(tài)值的判斷方式與全部已知狀態(tài)值對比是否存在相等的方式進行,那么,程序當中也將會存在較多的判斷轉(zhuǎn)移語句,如此一來,程序會在判斷語句上浪費較多的時間,同時,所浪費的基本時間也會以線性狀態(tài)增加,在狀態(tài)較多的情況下也將有可能在此次處理并未完全結(jié)束時傳送過來下一個數(shù)據(jù),在這種情況下,極有可能會因無法及時的接收數(shù)據(jù)而使得數(shù)據(jù)漏掉,最終出現(xiàn)錯誤。要想防止此問題的發(fā)生,我們可以通過下面的方法著手實施。首先在程序的存儲器當中對各個分支狀態(tài)的程序入口設置地址表,其次,再把此前的狀態(tài)值賦給A、MOV A、R,再通過MOVC A@A+DPTR指令來查找地址表,將各分支入口的地址找出來,再將此地址在于 A中。同時,通常散轉(zhuǎn)指令JMP@A+DPTR轉(zhuǎn)向分支對程序加以處理。
四、結(jié)語
狀態(tài)機隸屬于時序電路的范疇,狀態(tài)機在對邏輯復雜以及實時事件加以處理時充分的展現(xiàn)出其中的優(yōu)越性,在單片機編程中運用有限狀態(tài)機能夠幫助程序解決高效運行以及實時性處理方面的問題,確保程序的執(zhí)行時間與判斷語句比降至最低,同時促使程序相關狀態(tài)之間的關系以更加直觀的狀態(tài)呈現(xiàn)出來,這在一定程度上有籃球程序模塊化的形成,編寫過程更加簡單、思路也更加的清晰,具有較強的可修改性,這是編寫大型程序的基本方式之一。
參考文獻:
[1]雷貴.有限狀態(tài)機在單片機編程中的應用[J].現(xiàn)代商貿(mào)工業(yè),2013,22:187188.
[2]郭兆正,于鵬,于震.基于有限狀態(tài)機建模的單片機編程方法研究[J].渤海大學學報(自然科學版),2016,03:266270.
[3]劉媛媛.51單片機用有限狀態(tài)機算法實現(xiàn)順序控制[J].機械工程與自動化,2011,04:4244.
[4]孔憲青.基于有限狀態(tài)機的按鍵檢測[J].電腦知識與技術,2014,34:81548155.
[5]覃園芳.基于有限狀態(tài)機實現(xiàn)的單片機控制電梯仿真系統(tǒng)[J].中國新技術新產(chǎn)品,2016,13:89.
作者簡介:楊旭(1983),男,漢族,河南鄭州人,本科,助理工程師,從事冶金過程自動化控制系統(tǒng)開發(fā)與系統(tǒng)集成,冶金過程與自動化控制研究。