
范例3:
LOP1: JB BIT,LOP2
LJMP EXIT
LOP2: {循環(huán)體}
LJMP LOP1
EXIT: ┇
范例4:
LOP1: JNB BIT,EXIT
{循環(huán)體}
LJMP LOP1
EXIT: ┇
2.3.2 直到型循環(huán)結(jié)構(gòu)
在直到型循環(huán)結(jié)構(gòu)程序中,CPU首先執(zhí)行循環(huán)體程序,再執(zhí)行條件轉(zhuǎn)移指令,判斷循環(huán)條件。當條件滿足時,CPU繼續(xù)執(zhí)行循環(huán)體程序;當條件不滿足時,CPU退出循環(huán)結(jié)構(gòu)程序,接著執(zhí)行后續(xù)程序。直到型循環(huán)結(jié)構(gòu)如圖6所示,程序?qū)崿F(xiàn)方法參見范例5、范例6。

范例5:
MOV R2,#COUNT
LOP1: {循環(huán)體}
DJNZ R2,LOP1
┇
范例6:
LOP1:{循環(huán)體}
JB BIT,LOP1
┇
說明:條件轉(zhuǎn)移類指令、比較不相等轉(zhuǎn)移類指令、減1不為0轉(zhuǎn)移指令均可作為條件判斷指令,由CPU決定是否繼續(xù)執(zhí)行循環(huán)體,從而實現(xiàn)了循環(huán)執(zhí)行程序段功能。
3 MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計步驟
MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計步驟如圖7所示,現(xiàn)對各部分具體設(shè)計要求分別敘述。

(1)需求分析
通過現(xiàn)場調(diào)研及與用戶交流,全面、深入、準確地分析MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計所要解決的實際問題,搞清實際問題所涉及的應(yīng)用環(huán)境、應(yīng)用對象、應(yīng)用過程、應(yīng)用要求、應(yīng)用聯(lián)系,從整體上得出結(jié)構(gòu)化程序設(shè)計所要達到的目標及系統(tǒng)所要實現(xiàn)的功能、完成的具體任務(wù)、產(chǎn)品的形式,最后形成需求分析報告。
(2)總體規(guī)劃
在需求分析的基礎(chǔ)之上,制訂出MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計的總體規(guī)劃?傮w規(guī)劃中應(yīng)確定MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計的設(shè)計原則、設(shè)計目標、設(shè)計任務(wù)、設(shè)計方式、設(shè)計進度和設(shè)計協(xié)作。
(3)總體設(shè)計
基于需求分析,按照總體規(guī)劃進行總體設(shè)計,確定出MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計的具體技術(shù)方案?傮w設(shè)計包括系統(tǒng)性能設(shè)計、功能設(shè)計、工作原理設(shè)計、軟件結(jié)構(gòu)設(shè)計、程序流程設(shè)計和通信協(xié)議設(shè)計。
(4)模型建立
總體設(shè)計確定了軟件結(jié)構(gòu)的所有功能模塊,某些功能模塊涉及處理復(fù)雜實際問題,應(yīng)根據(jù)相關(guān)理論和專業(yè)知識,對復(fù)雜實際問題建立數(shù)學(xué)模型,為后續(xù)算法設(shè)計提供依據(jù)。
(5)數(shù)據(jù)結(jié)構(gòu)
依據(jù)功能模塊所要完成的指定功能、所要執(zhí)行的具體任務(wù)、所要處理的具體問題,針對為特定功能模塊所建立的數(shù)學(xué)模型,應(yīng)確定出功能模塊的輸入數(shù)據(jù)、暫存數(shù)據(jù)、輸出數(shù)據(jù)、數(shù)據(jù)關(guān)系。對于MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計,應(yīng)統(tǒng)籌規(guī)劃內(nèi)部RAM、確定數(shù)據(jù)類型、定義程序變量、分配數(shù)據(jù)存儲單元,為后續(xù)算法設(shè)計打好基礎(chǔ)。
(6)算法設(shè)計
結(jié)構(gòu)化程序設(shè)計包括結(jié)構(gòu)化算法設(shè)計。在建立了特定功能模塊的數(shù)學(xué)模型、規(guī)劃了特定功能模塊的數(shù)據(jù)結(jié)構(gòu)之后,應(yīng)對數(shù)學(xué)模型進行結(jié)構(gòu)化算法設(shè)計,結(jié)構(gòu)化算法設(shè)計的原則如下:
①自頂向下、逐步求精;谛枨蠓治鲋朴喅隹傮w規(guī)劃,依據(jù)總體規(guī)劃完成總體設(shè)計,按照總體設(shè)計自頂向下對總?cè)蝿?wù)逐層分解細化,直到每個子任務(wù)僅處理一個特定問題。
②模塊化設(shè)計。由自頂向下、逐步求精得出的子任務(wù)處理程序稱為功能模塊,處理復(fù)雜實際問題的應(yīng)用程序由多層若干功能模塊組成。
③功能模塊特性。功能模塊僅處理一個特定子任務(wù);功能模塊由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成;功能模塊可獨立編程、獨立編譯、獨立調(diào)試;功能模塊可被上層功能模塊調(diào)用。
(7)程序編輯
按照數(shù)據(jù)結(jié)構(gòu)規(guī)劃,對軟件結(jié)構(gòu)中各層功能模塊應(yīng)分別進行編程。對于建有數(shù)學(xué)模型、設(shè)有算法的功能模塊,應(yīng)依據(jù)算法設(shè)計進行編程。
(8)程序編譯
利用集成開發(fā)調(diào)試工具軟件,對各層功能模塊源程序分別編譯,檢查程序語法。若發(fā)現(xiàn)語法錯誤,應(yīng)修改源程序重新編譯,直到所有功能模塊源程序編譯通過為止。
基于總體設(shè)計,參照軟件結(jié)構(gòu)圖及程序流程圖,將各層功能模塊集成到一起,形成一個完整應(yīng)用程序,并進行統(tǒng)一編譯。若發(fā)現(xiàn)語法錯誤,應(yīng)修改應(yīng)用程序重新編譯,直到應(yīng)用程序編譯通過為止。
(9)程序調(diào)試
利用集成開發(fā)調(diào)試工具軟件,首先對各層功能模塊分別進行調(diào)試,檢查各功能模塊的功能是否正確。若發(fā)現(xiàn)功能邏輯錯誤,應(yīng)修改程序錯誤后重新調(diào)試,直到所有功能模塊調(diào)試通過為止。然后對應(yīng)用程序進行統(tǒng)調(diào),檢查應(yīng)用程序的總體功能是否正確。若發(fā)現(xiàn)功能邏輯錯誤,應(yīng)跟蹤查找錯誤原因,確定引起錯誤的位置,修改程序錯誤后重新調(diào)試,直到應(yīng)用程序調(diào)試通過為止。
(10)文檔整理
應(yīng)用程序調(diào)試通過后,應(yīng)對應(yīng)用程序進行測試,測試通過后,應(yīng)整理出應(yīng)用程序的整套技術(shù)文檔。技術(shù)文檔包括需求分析報告、總體規(guī)劃報告、總體設(shè)計報告、源程序文件和使用說明。
本文探討了MCS-51系列單片機結(jié)構(gòu)化程序設(shè)計相關(guān)問題,對于其他系列單片機,軟件程序設(shè)計人員可參照本文進行對應(yīng)結(jié)構(gòu)化程序設(shè)計。對于本文所述功能模塊,軟件設(shè)計人員應(yīng)結(jié)合實際、準確理解、整體考慮、總體設(shè)計、按功能分層次設(shè)計好各層功能模塊。本程序的設(shè)計步驟及硬件設(shè)計部分,對MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計同樣適用。
參考文獻
[1] 張毅剛.單片微機原理及應(yīng)用.西安:西安電子科技大學(xué)出版社,1994.
[2] 張毅剛.MCS-51單片機應(yīng)用設(shè)計.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003.
[3] 何立民.MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計.北京:北京航空航天大學(xué)出版社,1990.
[4] 涂時亮.單片機軟件設(shè)計技術(shù).重慶:科學(xué)文獻出版社重慶分社,1987.
[1]





