在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 狀態(tài)機(jī)簡(jiǎn)介及其思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用

            狀態(tài)機(jī)簡(jiǎn)介及其思路在單片機(jī)程序設(shè)計(jì)中的應(yīng)用

            作者: 時(shí)間:2012-08-18 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/171025.htm

            圖2 時(shí)鐘程序遷移圖


            把這張圖稍做歸納,就可以得到它的另一種表現(xiàn)形式——遷移表,如表2所示。

            表2 時(shí)鐘程序遷移表

            狀態(tài)機(jī)的注意事項(xiàng)
            基于狀態(tài)機(jī)的程序調(diào)度機(jī)制,其的難點(diǎn)并不在于對(duì)狀態(tài)機(jī)概念的理解,而在于對(duì)系統(tǒng)工作狀態(tài)的合理劃分。


            初學(xué)者往往會(huì)把某個(gè)“程序動(dòng)作”當(dāng)作是一種“狀態(tài)”來處理。我稱之為“偽態(tài)”。那么如何區(qū)分“動(dòng)作”和“狀態(tài)”。本匠人的心得是看二者的本質(zhì):“動(dòng)作”是不穩(wěn)定的,即使沒有條件的觸發(fā),“動(dòng)作”一旦執(zhí)行完畢就結(jié)束了;而“狀態(tài)”是相對(duì)穩(wěn)定的,如果沒有外部條件的觸發(fā),一個(gè)狀態(tài)會(huì)一直持續(xù)下去。


            初學(xué)者的另一種比較致命的錯(cuò)誤,就是在狀態(tài)劃分時(shí)漏掉一些狀態(tài)。我稱之為“漏態(tài)”。


            “偽態(tài)”和“漏態(tài)”這兩種錯(cuò)誤的存在,將會(huì)導(dǎo)致程序結(jié)構(gòu)的渙散。因此要特別小心避免。

            更復(fù)雜的狀態(tài)機(jī)
            前面介紹的是一種簡(jiǎn)單的狀態(tài)結(jié)構(gòu)。它只有一級(jí),并且只有一維,如圖3所示。

            圖3 線性狀態(tài)機(jī)結(jié)構(gòu)


            如果有必要,我們可以建立更復(fù)雜的狀態(tài)機(jī)模型。


            1 多級(jí)狀態(tài)結(jié)構(gòu)
            狀態(tài)機(jī)可以是多級(jí)的。在分層的多級(jí)狀態(tài)機(jī)系統(tǒng)里面,一個(gè)“父狀態(tài)”下可以劃分多個(gè)“子狀態(tài)”,這些子狀態(tài)共同擁有上級(jí)父狀態(tài)的某些共性,同時(shí)又各自擁有自己的一些個(gè)性。


            在某些狀態(tài)下,還可以進(jìn)一步劃分子狀態(tài)。比如,我們可以把前面的時(shí)鐘例子修改如下:
            把所有和時(shí)鐘功能有關(guān)的狀態(tài),合并成1個(gè)一級(jí)狀態(tài)。在這個(gè)狀態(tài)下,又可以劃分出3個(gè)二級(jí)子狀態(tài),分別為顯示時(shí)間、設(shè)置小時(shí)、設(shè)置分鐘;


            同樣,我們也可以把所有和鬧鐘功能有關(guān)的狀態(tài),合并成1個(gè)一級(jí)狀態(tài)。在這個(gè)狀態(tài)下,再劃分出4個(gè)二級(jí)子狀態(tài),分別為顯示鬧鐘、設(shè)置“時(shí)”、設(shè)置“分”、設(shè)置鳴叫時(shí)間。


            我們需要用另一個(gè)狀態(tài)變量(寄存器)來表示這些子狀態(tài)。


            子狀態(tài)下面當(dāng)然還可以有更低一級(jí)的孫狀態(tài)(子子孫孫無窮盡也),從而將整個(gè)狀態(tài)體系變成了樹狀多級(jí)狀態(tài)結(jié)構(gòu),如圖4所示。

            圖4 樹狀多級(jí)狀態(tài)結(jié)構(gòu)


            2 多維狀態(tài)結(jié)構(gòu)
            狀態(tài)結(jié)構(gòu)也可以是多維的。從不同的角度對(duì)系統(tǒng)進(jìn)行狀態(tài)的劃分,這些狀態(tài)的某些特性是交叉的。比如,在按照按鍵和顯示劃分狀態(tài)的同時(shí),又按照系統(tǒng)的工作進(jìn)程做出另一種狀態(tài)劃分。這兩種狀態(tài)劃分同時(shí)存在,相互交叉,從而構(gòu)成了二維的狀態(tài)結(jié)構(gòu)空間。


            舉一個(gè)這方面的例子,如:空調(diào)遙控器,如圖5所示。

            圖5 多維狀態(tài)機(jī)結(jié)構(gòu)


            同樣,我們也可以構(gòu)建三維、四維甚至更多維的狀態(tài)結(jié)構(gòu)。每一維的狀態(tài)都需要用一個(gè)狀態(tài)變量(寄存器)來表示。


            無論多級(jí)狀態(tài)結(jié)構(gòu)和多維狀態(tài)結(jié)構(gòu)看上去多么迷人,匠人的忠告是:我們依然要盡可能地簡(jiǎn)化狀態(tài)結(jié)構(gòu),能用單級(jí)、單維的結(jié)構(gòu),就不要給自己找事,去玩那噩夢(mèng)般的復(fù)雜結(jié)構(gòu)。


            簡(jiǎn)單的才是最有效的。

            結(jié)束語
            對(duì)狀態(tài)機(jī)的理解需要一個(gè)由淺入深的過程。這個(gè)過程應(yīng)該是與實(shí)踐和具體案例思考相結(jié)合的。當(dāng)一種良好的成為設(shè)計(jì)的習(xí)慣,它就能給設(shè)計(jì)者帶來回報(bào)。愿這篇手記里介紹的基于狀態(tài)機(jī)的編程能給新手們帶來一些啟迪,幫助大家找到“”的感覺。


            上一頁 1 2 下一頁

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉