軟件所要完成的任務(wù)已在總體設(shè)計(jì)時(shí)規(guī)定,在具體軟件設(shè)計(jì)時(shí),要結(jié)合硬件結(jié)構(gòu),進(jìn)一步明確軟件所承擔(dān)的一個(gè)個(gè)任務(wù)細(xì)節(jié),確定具體實(shí)施的方法,合理分配資源。 1程序設(shè)計(jì)技術(shù) 合理的軟件結(jié)構(gòu)是設(shè)計(jì)一個(gè)性能優(yōu)良的單片機(jī)應(yīng)用系統(tǒng)軟件的基礎(chǔ)。在程序設(shè)計(jì)中,應(yīng)培養(yǎng)結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格,各功能程序?qū)嵭心K化、子程序化。一般有以下兩種設(shè)計(jì)方法。 a.模塊程序設(shè)計(jì) 模塊程序設(shè)計(jì)是單片機(jī)應(yīng)用中常用的一種程序設(shè)計(jì)技術(shù)。它是把一個(gè)較長的程序分解為若干個(gè)功能相對獨(dú)立的較小的程序模塊,各個(gè)程序模塊分別設(shè)計(jì)、編程和調(diào)試,最后由各個(gè)調(diào)試好的模塊組成一個(gè)大的程序。 優(yōu)點(diǎn)是單個(gè)功能明確的程序模塊的設(shè)計(jì)和調(diào)試比較方便,容易完成,一個(gè)模塊可以為多個(gè)程序所共享。其缺點(diǎn)是各個(gè)模塊的連接有時(shí)有一定難度。 b.自頂向下的程序設(shè)計(jì) 自頂向下程序設(shè)計(jì)時(shí),先從主程序開始設(shè)計(jì),從屬程序或子程序用符號來代替。主程序編好后再編制各從屬程序和子程序,最后完成整個(gè)系統(tǒng)軟件的設(shè)計(jì)。 優(yōu)點(diǎn)是比較符合于人們的日常思維,設(shè)計(jì)、調(diào)試和連接同時(shí)按一個(gè)線索進(jìn)行,程序錯(cuò)誤可以較早的發(fā)現(xiàn)。缺點(diǎn)是上一級的程序錯(cuò)誤將對整個(gè)程序產(chǎn)生影響,一處修改可能引起對整個(gè)程序的全面修改。 2程序設(shè)計(jì) 在選擇好軟件結(jié)構(gòu)和所采用的程序設(shè)計(jì)技術(shù)后,便可著手進(jìn)行程序設(shè)計(jì),將設(shè)計(jì)任務(wù)轉(zhuǎn)化為具體的程序。 a.建立數(shù)學(xué)模型 根據(jù)設(shè)計(jì)任務(wù),描述出各輸入變量和各輸出變量之間的數(shù)學(xué)關(guān)系,此過程即為建立數(shù)學(xué)模型。數(shù)學(xué)模型隨系統(tǒng)任務(wù)的不同而不同,其正確度是系統(tǒng)性能好壞的決定性因素之一。 b.繪制程序流程圖 通常在編寫程序之前先繪制程序流程圖,以提高軟件設(shè)計(jì)的總體效率。程序流程圖以簡明直觀的方式對任務(wù)進(jìn)行描述,并很容易由此編寫出程序,故對初學(xué)者來說尤為適用。 在設(shè)計(jì)過程中,先畫出簡單的功能性流程圖(粗框圖),然后對功能流程圖進(jìn)行細(xì)化和具體化,對存儲器、寄存器、標(biāo)志位等工作單元作具體的分配和說明,將功能流程圖中每一個(gè)粗框的操作轉(zhuǎn)變?yōu)榫唧w的存儲器單元、工作寄存器或I/O口的操作,從而給出詳細(xì)的程序流程圖(細(xì)框圖)。 c.程序的編制 在完成程序流程圖設(shè)計(jì)以后,便可以編寫程序。程序設(shè)計(jì)語言對程序設(shè)計(jì)的影響較大。匯編語言是最為常用的單片機(jī)程序語言,用匯編語言編寫程序代碼精簡,直接面向硬件電路進(jìn)行設(shè)計(jì),速度快,但進(jìn)行大量數(shù)據(jù)運(yùn)算時(shí),編寫難度將大大增加,不易閱讀和調(diào)試。在有大量數(shù)據(jù)運(yùn)算時(shí)可采用C語言(如MCS-51的C51)或PL/M語言。 編寫程序時(shí),應(yīng)注意系統(tǒng)硬件資源的合理分配與使用,子程序的入/出口參數(shù)的設(shè)置與傳遞。采用合理的數(shù)據(jù)結(jié)構(gòu)、控制算法,以滿足系統(tǒng)要求的精度。 在存儲空間分配時(shí),應(yīng)將使用頻率最高的數(shù)據(jù)緩沖器設(shè)在內(nèi)部RAM;標(biāo)志應(yīng)設(shè)置在片內(nèi)RAM位操作區(qū)(20H~2FH)中;指定用戶堆棧區(qū),棧區(qū)的大小應(yīng)留有余量;余下部分作為數(shù)據(jù)緩沖區(qū)。 在編寫程序過程中,根據(jù)流程圖逐條用符號指令來描述,即得匯編語言源程序。應(yīng)按MCS-51匯編語言的標(biāo)準(zhǔn)符號和格式書寫,在完成系統(tǒng)功能的同時(shí)應(yīng)注意保證設(shè)計(jì)的可靠性,如數(shù)字濾波、軟件陷阱、保護(hù)等。必要時(shí)可作若干功能性注釋,提高程序的可讀性。 3程序設(shè)計(jì) 各程序模塊編輯之后,需進(jìn)行匯編或編譯、調(diào)試,當(dāng)滿足設(shè)計(jì)要求后,將各程序模塊按照軟件結(jié)構(gòu)設(shè)計(jì)的要求連接起來,即為軟件裝配,從而完成軟件設(shè)計(jì)。在軟件裝配時(shí),應(yīng)注意軟件接口。 免費(fèi)試聽C語言、電子、PCB、STM32、Linux、FPGA、Python等。想學(xué)習(xí)的你和我聯(lián)系預(yù)約就可以免費(fèi)聽課了宋工Q3/5/2/4/6/5/9/0/8/8 Tel/WX:1/7/3/1/7/9/5/1/9/0/8 |