• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      狀態(tài)機(jī)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用*

      2016-11-10 06:54:33王春武程禮邦劉春玲王立忠
      關(guān)鍵詞:運(yùn)算符狀態(tài)機(jī)流程圖

      王春武,程禮邦,劉春玲,王立忠

      狀態(tài)機(jī)在嵌入式系統(tǒng)設(shè)計(jì)中的應(yīng)用*

      王春武,程禮邦,劉春玲,王立忠

      (吉林師范大學(xué)信息技術(shù)學(xué)院,四平136000)

      為了使嵌入式系統(tǒng)軟件更易于編寫,并且提高可維護(hù)性,本文將有限狀態(tài)機(jī)引入到嵌入式系統(tǒng)設(shè)計(jì)中。以工程實(shí)例為背景,首先利用程序流程圖對(duì)算法進(jìn)行描述,然后提出了狀態(tài)機(jī)建模的基本步驟和使用方法,最后通過(guò)對(duì)比得出了狀態(tài)機(jī)在描述算法上的優(yōu)勢(shì)。

      FSM;嵌入式系統(tǒng);流程圖

      引 言

      流程圖作為一種表達(dá)算法的圖形化工具,常用于嵌入式系統(tǒng)程序開發(fā)過(guò)程,其通過(guò)特定的圖形和線段使復(fù)雜的算法變得形象直觀,脈絡(luò)清晰,避免了歧義性,易于理解和產(chǎn)生代碼[1]。但是復(fù)雜的程序會(huì)導(dǎo)致流程圖的篇幅過(guò)大,以及流程線的無(wú)約束性會(huì)導(dǎo)致流程的任意轉(zhuǎn)向,從而造成程序閱讀和修改上的困難,不利于結(jié)構(gòu)化程序的設(shè)計(jì)[2]。針對(duì)此問(wèn)題,結(jié)合多年的嵌入式系統(tǒng)設(shè)計(jì)和教學(xué)經(jīng)驗(yàn),提出將數(shù)字電路中的有限狀態(tài)機(jī)思想引入到嵌入式系統(tǒng)設(shè)計(jì)中,從具體工程實(shí)例出發(fā),討論狀態(tài)劃分、激勵(lì)和響應(yīng)表達(dá)、轉(zhuǎn)化為具體程序的方法,并通過(guò)與流程圖對(duì)比,說(shuō)明該方法的優(yōu)勢(shì)。

      1 狀態(tài)機(jī)的概念

      有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)簡(jiǎn)稱狀態(tài)機(jī),它是由一系列狀態(tài)節(jié)點(diǎn)、狀態(tài)連接線、激勵(lì)信號(hào)和響應(yīng)信號(hào)組成[3]的有向圖。在激勵(lì)信號(hào)的作用下,狀態(tài)機(jī)將響*基金項(xiàng)目:吉林省職業(yè)教育與成人教育教學(xué)改革研究重點(diǎn)課題(2014ZCY249);吉林省教育廳“十二五”科學(xué)技術(shù)研究項(xiàng)目(2014[489])。應(yīng)一系列事件而運(yùn)行,從而實(shí)現(xiàn)在有限狀態(tài)節(jié)點(diǎn)之間的有序轉(zhuǎn)換。FSM包含4個(gè)要素,即現(xiàn)態(tài)、次態(tài)激勵(lì)、響應(yīng)。其中,當(dāng)前狀態(tài)節(jié)點(diǎn)稱為現(xiàn)態(tài),下一狀態(tài)節(jié)點(diǎn)稱為次態(tài),導(dǎo)致狀態(tài)發(fā)生變化的信號(hào)稱為激勵(lì),產(chǎn)生的動(dòng)作稱為響應(yīng)[4]。在狀態(tài)機(jī)運(yùn)行時(shí),任何時(shí)候FSM只能處于給定狀態(tài)中的一個(gè),當(dāng)接收到一個(gè)激勵(lì)事件時(shí),狀態(tài)機(jī)則產(chǎn)生一個(gè)響應(yīng)輸出,與此同時(shí)也可能伴隨著狀態(tài)的轉(zhuǎn)移。因此,狀態(tài)的轉(zhuǎn)移和輸出不僅與輸入事件有關(guān),而且還與狀態(tài)機(jī)在前一時(shí)刻的狀態(tài)有關(guān)。

      2 狀態(tài)機(jī)建模

      嵌入式系統(tǒng)設(shè)計(jì)中涉及到的實(shí)例一般可分解為若干個(gè)有限狀態(tài),同時(shí)系統(tǒng)一般會(huì)在外部觸發(fā)下產(chǎn)生相應(yīng)的動(dòng)作,這一特點(diǎn)非常適合采用狀態(tài)機(jī)對(duì)系統(tǒng)進(jìn)行事件分析。在建立狀態(tài)機(jī)時(shí),首先需要對(duì)系統(tǒng)的工作狀態(tài)進(jìn)行全面分析,以耦合度最小為原則,合理劃分系統(tǒng)的狀態(tài)。然后,找出在不同狀態(tài)下的所有激勵(lì)信號(hào)和響應(yīng)動(dòng)作,并利用帶箭頭的線段標(biāo)注狀態(tài)轉(zhuǎn)移方向,其中激勵(lì)和響應(yīng)信號(hào)用“/”隔開,標(biāo)注在轉(zhuǎn)移線段上。狀態(tài)機(jī)建立完成后,需要認(rèn)真校驗(yàn)所有狀態(tài)、激勵(lì)和響應(yīng)信號(hào)的完整性,以確保狀態(tài)和狀態(tài)轉(zhuǎn)移線的正確性和冗余性。最后,對(duì)照狀態(tài)圖,以激勵(lì)信號(hào)作為判斷條件,將狀態(tài)圖中的動(dòng)作轉(zhuǎn)化為具體執(zhí)行代碼。

      3 流程圖與狀態(tài)機(jī)方案對(duì)比

      為了說(shuō)明狀態(tài)機(jī)的優(yōu)勢(shì),以STM32F103VET6處理器為控制核心,配合矩陣式按鍵和LCD1602液晶模塊,以計(jì)算器的設(shè)計(jì)為工程背景,對(duì)比流程圖和狀態(tài)機(jī)在算法描述上的優(yōu)劣性。

      經(jīng)過(guò)對(duì)計(jì)算器的運(yùn)算規(guī)則進(jìn)行歸納可知,計(jì)算過(guò)程可以抽象為式(1),即按照雙目運(yùn)算規(guī)則,首先完成數(shù)值n1的錄入,然后確定運(yùn)算符號(hào)op,再繼續(xù)錄入數(shù)值n2,最后輸入“=”號(hào)或運(yùn)算符完成一次運(yùn)算過(guò)程。若要連續(xù)運(yùn)算,則可將本次運(yùn)算結(jié)果保存至n1,再重復(fù)以上步驟[5-6]。

      3.1流程圖表示法

      利用流程圖表達(dá)具體的算法如圖1所示,設(shè)變量n用于保存每次按鍵的信息,則算法可以描述為:

      ①?gòu)?fù)位時(shí),系統(tǒng)初始化顯示變量n1的初值為0;

      ②運(yùn)行時(shí),若按下的n是數(shù)值鍵,則依據(jù)式(2)更新n1,否則轉(zhuǎn)至步驟③;

      ③保存運(yùn)算符到變量op中,并設(shè)定n2初值為0,轉(zhuǎn)至步驟④;

      ④若按下的n是數(shù)值鍵,則依據(jù)式(3)更新n2,否則轉(zhuǎn)至步驟⑤;

      ⑤依據(jù)式(1)完成運(yùn)算,判斷按鍵情況,若按下的n是運(yùn)算符,則在完成計(jì)算后轉(zhuǎn)至步驟④,否則,說(shuō)明按下了“=”,轉(zhuǎn)至步驟⑥;

      ⑥若n是數(shù)值鍵,則更新n1并轉(zhuǎn)至步驟②,否則更新op并轉(zhuǎn)至步驟④。

      3.2狀態(tài)機(jī)表示法

      根據(jù)狀態(tài)機(jī)的思想可知,該系統(tǒng)能夠劃分為3個(gè)基本狀態(tài)0~2,其中0態(tài)代表為n1賦值狀態(tài),1態(tài)代表為n2賦值狀態(tài),2態(tài)代表為過(guò)渡狀態(tài)。按鍵作為系統(tǒng)的激勵(lì)信號(hào)可分為3種情況,即數(shù)字鍵、“=”號(hào)鍵和運(yùn)算符(“+”、“-”、“*”、“/”)。利用狀態(tài)圖表達(dá)具體的算法如圖2所示,具體運(yùn)算步驟為:

      ①初始化n1為0;

      ②0態(tài)下接收到數(shù)字鍵,按照式(2)更新n1,狀態(tài)不變;

      ③0態(tài)下接收到運(yùn)算符,則保存運(yùn)算符到op,同時(shí)轉(zhuǎn)到1態(tài);

      ④1態(tài)下接收到數(shù)字鍵,按照式(3)更新n2,狀態(tài)不變;

      ⑤1態(tài)下接收到“=”,則按照式(1)計(jì)算結(jié)果,并保存到n1,同時(shí)轉(zhuǎn)到2態(tài);

      ⑥1態(tài)下接收到運(yùn)算符,則按照式(1)計(jì)算結(jié)果,并保存到n1,更新運(yùn)算符到op,n2清零,狀態(tài)不變;

      ⑦2態(tài)下接收到數(shù)字鍵,更新n1=n,同時(shí)轉(zhuǎn)到0態(tài);

      ⑧2態(tài)下接收到運(yùn)算符,更新運(yùn)算符到op,同時(shí)轉(zhuǎn)到1態(tài)。

      狀態(tài)機(jī)模型建立后,在按鍵識(shí)別程序中,以激勵(lì)信號(hào)作為判斷條件,將狀態(tài)圖中的動(dòng)作轉(zhuǎn)化為具體執(zhí)行代碼如下:

      圖1 計(jì)算器控制流程圖

      voidkey(){ //按鍵識(shí)別程序

      n=get_press();//掃描矩陣式按鍵,并獲得按鍵信息(0~

      //9,+,-,*,/,=)

      if(state==0){

      if(n>=0&&n<=9) //n是數(shù)字

      n1*=10+n; //構(gòu)造新數(shù)

      圖2 計(jì)算器的狀態(tài)機(jī)

      對(duì)比圖1和圖2,雖然采用流程圖和狀態(tài)機(jī)均能完成算法表達(dá),但利用狀態(tài)圖描述算法能夠使?fàn)顟B(tài)變換過(guò)程更清晰、表達(dá)方式更簡(jiǎn)潔,更有利于明確設(shè)計(jì)思路。在編寫代碼過(guò)程中,基于流程圖的程序中需要加入嵌套式多分支結(jié)構(gòu),代碼結(jié)構(gòu)復(fù)雜,編寫容易出錯(cuò),增加了閱讀和調(diào)試的難度。而在基于狀態(tài)機(jī)模型的程序中,只以激勵(lì)信號(hào)作為觸發(fā)條件,在不同狀態(tài)下執(zhí)行不同的響應(yīng),代碼結(jié)構(gòu)清晰緊湊,閱讀和調(diào)試容易。當(dāng)然,利用狀態(tài)機(jī)的設(shè)計(jì)思想,還可以進(jìn)一步豐富該系統(tǒng)的功能,如加入“CE”鍵控制以及帶優(yōu)先級(jí)的四則混合運(yùn)算的設(shè)計(jì)等。

      結(jié) 語(yǔ)

      針對(duì)流程圖存在的不足,本文提出將有限狀態(tài)機(jī)引入到嵌入式系統(tǒng)設(shè)計(jì)中,并從具體工程實(shí)例出發(fā),詳細(xì)介紹了狀態(tài)機(jī)的建模流程,對(duì)比得出了狀態(tài)機(jī)在表達(dá)算法上的優(yōu)勢(shì)。實(shí)踐中,利用工程實(shí)例驗(yàn)證了狀態(tài)機(jī)模型的正確性和可靠性。利用狀態(tài)機(jī)方法能夠有效降低系統(tǒng)的復(fù)雜性,提升軟件的質(zhì)量和可靠性,具有很強(qiáng)的工程價(jià)值和實(shí)際意義。

      [1]馮爽.關(guān)于數(shù)據(jù)流程圖畫法原則的研究[J].河北科技大學(xué)學(xué)報(bào),2012,33(4):343-346.

      [2]許曉春,杜曉晨,梅琳,等.一種改進(jìn)的程序流程圖—層次流程圖HFG[J].南京大學(xué)學(xué)報(bào):自然科學(xué)版,2002,38(2):158-165.

      [3]秦國(guó)棟.有限狀態(tài)機(jī)的嵌入式Linux按鍵驅(qū)動(dòng)設(shè)計(jì)[J].學(xué)習(xí)園地,2010(4):79-81.

      [4]何劍宇,劉兢兢.有限狀態(tài)機(jī)建模在嵌入式按鍵設(shè)計(jì)中的應(yīng)用[J].沈陽(yáng)師范大學(xué)學(xué)報(bào):自然科學(xué)版,2012,30(2):168 171.

      [5]吳芳琴.基于單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)[J].電子世界,2015(19):53-54.

      [6]吳立勇,丁作文.基于Android系統(tǒng)的手機(jī)計(jì)算器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù),2014(4):58-60.

      王春武(副教授),研究方向?yàn)樾盘?hào)檢測(cè)技術(shù)與自動(dòng)化裝置。

      (責(zé)任編輯:薛士然 收修改稿日期:2016-03-21)

      Application of Finite State Machine in Embedded System

      Wang Chunwu,Cheng Libang,Liu Chunling,Wang Lizhong
      (College of Information and Technology,Jilin Normal University,Siping 136000,China)

      In order to make the software of the embedded system easy to write and improve the maintainability of the software,the finite state machine is introduced into the design of embedded system.Based on the engineering example,the program flow chart is used to describe the algorithm,then the basic steps of the state machine model and the use of the method are proposed.Finally,the advantage of the state machine in the description of the algorithm is summarized.

      FSM;embedded system;flow chart

      TP368.1

      A

      猜你喜歡
      運(yùn)算符狀態(tài)機(jī)流程圖
      老祖?zhèn)魇诨具\(yùn)算符
      基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
      專利申請(qǐng)審批流程圖
      河南科技(2016年8期)2016-09-03 08:08:22
      專利申請(qǐng)審批流程圖
      河南科技(2016年6期)2016-08-13 08:18:29
      寧??h村級(jí)權(quán)力清單36條
      C++運(yùn)算符重載剖析
      《天津醫(yī)藥》稿件處理流程圖
      表達(dá)式求值及符號(hào)推導(dǎo)
      FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
      基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
      那坡县| 旬邑县| 昌邑市| 拜泉县| 德兴市| 盐山县| 南召县| 临颍县| 洮南市| 台北县| 响水县| 玛多县| 马鞍山市| 雷山县| 中阳县| 兴宁市| 丁青县| 古交市| 廊坊市| 凤庆县| 青海省| 平陆县| 九台市| 曲靖市| 临汾市| 汉寿县| 阿拉善盟| 高州市| 刚察县| 德兴市| 论坛| 炉霍县| 清远市| 剑川县| 东光县| 襄垣县| 辉县市| 荔浦县| 衡阳县| 衡水市| 威远县|