51單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)經(jīng)驗(yàn)
在進(jìn)行應(yīng)用系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮,相結(jié)合進(jìn)行。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件的任務(wù)也就明確了 ,系統(tǒng)中的軟件是根據(jù)系統(tǒng)功能要求設(shè)計(jì)的。
一般地講,軟件的功能可分為兩大類(lèi)。一類(lèi)是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測(cè)量,計(jì)算,顯示,打印,輸出控制等;另一類(lèi)是監(jiān)控軟件,它是專門(mén)用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色。由于應(yīng)用系統(tǒng)種類(lèi)繁多,程序編制者風(fēng)格不一,因此應(yīng)用軟件因系統(tǒng)而異。盡管如此,作為優(yōu)秀的系統(tǒng)軟件還是有其共同特點(diǎn)和其規(guī)律的。設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮:
根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干個(gè)相對(duì)獨(dú)立的部分,根據(jù)它們之間的聯(lián)系和時(shí)間上的關(guān)系,設(shè)計(jì)出合理的軟件總體結(jié)構(gòu),使其清晰,簡(jiǎn)潔,流程合理。培養(yǎng)結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格,各功能程序?qū)嵭心K化,子程序化。既便于調(diào)試,連接,又便于移植,修改。
建立正確的數(shù)學(xué)模型。即根據(jù)功能要求,描述出各個(gè)輸入和輸出變量之間的數(shù)學(xué)關(guān)系,它是關(guān)系到系統(tǒng)性功能好壞的重要因素。
為提高軟件設(shè)計(jì)的總體效率,以簡(jiǎn)明,直觀的方法對(duì)任務(wù)進(jìn)行描述,在編寫(xiě)應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成部分,而且是決定成敗的關(guān)鍵部分。從某種意義上講,多花一份時(shí)間來(lái)設(shè)計(jì)程序流程圖,就可節(jié)約幾倍源程序編譯調(diào)試時(shí)間。
要合理分配系統(tǒng)資源,包括ROM,RAM,定時(shí)器/計(jì)數(shù)器,中斷源等。其中最關(guān)鍵的是片內(nèi)RAM分配。對(duì)8031來(lái)講,片內(nèi)RAM指00H-7FH單元,這128個(gè)字節(jié)的功能不完全相同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。
例如:在工作寄存器的8個(gè)單元中,R0和R1具有指針功能,是編程的重要角色,避免作為它用,20H—2FH這16個(gè)具有尋址功能,用來(lái)存放各種標(biāo)志位。邏輯變量,狀態(tài)變量等。
設(shè)置堆棧區(qū)時(shí)應(yīng)事先估算出子程序和中斷嵌套的級(jí)數(shù)及程序中堆棧操作指令使用情況,其大小應(yīng)留有余量。若系統(tǒng)擴(kuò)展了RAM存儲(chǔ)器,應(yīng)把使用頻率最高的數(shù)據(jù)緩沖器安排在片內(nèi)RAM中,以提高處理速度,當(dāng)RAM資源規(guī)劃好后,應(yīng)列出一張RAM資源詳細(xì)分配表,以備編程查用方便。注意在程序的有關(guān)位置處寫(xiě)上功能注 釋,提高程序的可讀性。
加強(qiáng)軟件抗干擾設(shè)計(jì),它是提高計(jì)算機(jī)應(yīng)用系統(tǒng)可靠性的有力措施。
通過(guò)編輯軟件編輯出的原程序,必須用編譯程序匯編后生成目標(biāo)代碼。如果原程序有語(yǔ)法錯(cuò)誤則返回編譯過(guò)程,修改原文件再繼續(xù)編譯,直到無(wú)語(yǔ)法錯(cuò)誤為止。這之后就是利用目標(biāo)碼進(jìn)行程序調(diào)試了,在運(yùn)行中發(fā)現(xiàn)設(shè)計(jì)上的錯(cuò)誤再重新修改源程序,如此反復(fù)直到成功。
一個(gè)單片機(jī)應(yīng)用系統(tǒng)經(jīng)過(guò)總體設(shè)計(jì),硬件設(shè)計(jì),軟件設(shè)計(jì),制板,元器件安裝后,在系統(tǒng)的程序存儲(chǔ)器中放入編制好的應(yīng)用程序,系統(tǒng)即可運(yùn)行。但一次性成功幾乎是不可能的,多少會(huì)出現(xiàn)一些硬件,軟件上的錯(cuò)誤。這就需要通過(guò)調(diào)試來(lái)發(fā)現(xiàn)錯(cuò)誤并加以改正。由于單片機(jī)在執(zhí)行程序時(shí)是無(wú)法控制的,為了能調(diào)試程序,檢查硬件,軟件運(yùn)行狀態(tài),就必須借助某種開(kāi)發(fā)工具模擬用戶實(shí)際的單片機(jī),并且能隨時(shí)觀察運(yùn)行的中間過(guò)程而不改變運(yùn)行中原有的數(shù)據(jù)性能和結(jié)果,從而進(jìn)行模仿現(xiàn)場(chǎng)的真實(shí)調(diào)試。完成這一模仿工作的開(kāi)發(fā)工具就是單片機(jī)仿真器。