在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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è)計應(yīng)用 > 運用狀態(tài)機提高嵌入式軟件效率

            運用狀態(tài)機提高嵌入式軟件效率

            作者: 時間:2009-07-02 來源:網(wǎng)絡(luò) 收藏


            “橫式”設(shè)計是把每個及所要執(zhí)行的動作單獨放到一個子函數(shù)中處理,有RC500Config()、RC500Request()、RC500Anticoll()等。工作的確定可以通過查詢表獲得,找到相應(yīng)的狀態(tài)后運行相應(yīng)的子函數(shù)。在每個子函數(shù)中,既有該狀態(tài)下應(yīng)該執(zhí)行的動作,也有狀態(tài)的轉(zhuǎn)換。然后在主程序中判斷狀態(tài)是否發(fā)生了轉(zhuǎn)換,再轉(zhuǎn)到相應(yīng)的狀態(tài)子程序中執(zhí)行。
            橫豎兩種寫法,實現(xiàn)的功能完全相同,但是“豎式”隱含了優(yōu)先級排序,破壞了事件間原有的關(guān)系。同時,由于處在每個狀態(tài)的事件數(shù)目不一致,而且事件發(fā)生的時間是隨機的,“豎式”設(shè)計為順序查詢方式,因此大量時間被浪費?!皺M式”設(shè)計,在某個時間點狀態(tài)是唯一確定的,延遲時間可以預(yù)先準(zhǔn)確估算。而且在事件發(fā)生時,系統(tǒng)會調(diào)用相應(yīng)的事件函數(shù),在函數(shù)里查找唯一確定的狀態(tài),并根據(jù)其狀態(tài)執(zhí)行動作和狀態(tài)轉(zhuǎn)移。使用這種方式設(shè)計的思路清晰簡潔,高,故使用“橫式”方法設(shè)計程序更好。類似地,對于GPRS、GPS等功能模塊也可以狀態(tài)機機制進(jìn)行程序設(shè)計,從而在整個智能收費機的設(shè)計中,對所有任務(wù)的處理都可以狀態(tài)機機制進(jìn)行相應(yīng)的程序設(shè)計。


            3 使用狀態(tài)機的效能分析
            在很多系統(tǒng)設(shè)計中都可以用到類似狀態(tài)機的設(shè)計思想,比較常用的地方就是各種液晶界面的設(shè)計。使用狀態(tài)機機制設(shè)計軟件,可以使設(shè)計思路清晰、靈活,軟件的可讀性強,便于以后的維護(hù)。如果合理地使用狀態(tài)機,還可以較大幅度地MCU的運行。下面以非接觸式IC卡的軟件設(shè)計流程為例討論。
            圖2(a)是傳統(tǒng)的軟件設(shè)計流程,使用這種流程設(shè)計的系統(tǒng)軟件按部就班地先執(zhí)行RC500Config(),再執(zhí)行RCS00Request(),然后是RC500Anticoll(),直到對IC卡操作完成,再轉(zhuǎn)到其他任務(wù)(如GPS)。這樣IC卡的操作任務(wù)占用了整個MCU資源。圖2(b)是使用狀態(tài)機設(shè)計系統(tǒng)軟件的流程。在使用狀態(tài)機的同時設(shè)定一個軟件時鐘,用來為系統(tǒng)的各個任務(wù)進(jìn)行計時,并進(jìn)行任務(wù)的調(diào)度。軟件時鐘使用一個長整型變量進(jìn)行計時,利用MC[J定時器1 ms或10 ms的中斷來實現(xiàn),從而使時鐘不受任務(wù)執(zhí)行過程的影響。當(dāng)某個任務(wù)執(zhí)行過程需要等待延時,執(zhí)行子函數(shù)返回main()函數(shù),讓其他任務(wù)使用MCtJ資源。這樣實現(xiàn)的軟件,在處理某個任務(wù)的空隙可以同時處理其他任務(wù)的操作,有效地了MCU處理事件的能力。具體實現(xiàn)方法如下:

            ……
            }
            當(dāng)延時不夠200ms時,函數(shù)RC500Request()直接返回而沒有改變IC卡操作的狀態(tài),因此MCU下一次進(jìn)行IC卡操作時,繼續(xù)執(zhí)行函數(shù)RC500Request(),直到IC卡操作狀態(tài)改變。同時,函數(shù)RC500Request()返回后,main()函數(shù)會檢查GPS、GPRS等工作模塊,執(zhí)行其中的某些動作。也就是說,在執(zhí)行IC卡操作的同時,可以執(zhí)行其他任務(wù)的操作;同理,在執(zhí)行其他任務(wù)的操作時,也可以執(zhí)行IC卡的一些操作。這樣就可以充分利用MCU的資源,MCU對多任務(wù)的處理。


            結(jié) 語
            使用上述狀態(tài)機機制設(shè)計的智能公交車IC卡收費機的系統(tǒng)軟件,能夠及時處理IC卡信息、GPS定位信息、GPRS通信等多個任務(wù)的操作,運行穩(wěn)定,完全滿足實際應(yīng)用的要求。該機制非常適合功能較多的軟件系統(tǒng)設(shè)計。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

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

            關(guān)閉