在單片機的應(yīng)用中,編程是非常重要的技術(shù)環(huán)節(jié)。在不斷的探索和發(fā)展中,模塊化的編程方式已經(jīng)成為單片機編程的重要方式。在模塊化編程中,應(yīng)考慮多個程序的結(jié)構(gòu)對程序執(zhí)行的影響,因此下面將分析單片機的程序結(jié)構(gòu)。
單片機的應(yīng)用非常廣泛,承擔(dān)了許多行業(yè)的系統(tǒng)控制任務(wù),單片機功能的實現(xiàn)主要取決于應(yīng)用程序的控制。適當(dāng)?shù)膶懽鹘Y(jié)構(gòu)和方法已成為研究的重點。
一、單片機程序結(jié)構(gòu)設(shè)計的特點
單片機的編程應(yīng)從程序開發(fā)的語言入手,為不同的功能選擇不同的程序結(jié)構(gòu),從而為程序設(shè)計打下良好的基礎(chǔ),因此如何在實際操作中選擇程序的結(jié)構(gòu)模式就成了編程很重要。隨著計算機技術(shù)的成熟和單片機技術(shù)的發(fā)展,提出了結(jié)構(gòu)化的編程方法。它主要是將程序編寫納入模塊模式,使用結(jié)構(gòu)標準化,模塊化等方式來實現(xiàn)程序的編寫,并使用模塊化結(jié)構(gòu)來簡化程序的復(fù)雜性。這種類型的設(shè)計是可重用和可移植的。簡化程序的編寫過程,提高模塊的利用率。從而降低了出錯的可能性,提高了單片機的應(yīng)用效果。根據(jù)不同的MCU功能可以選擇不同的模塊,每個模塊的功能都可以突出地應(yīng)用到系統(tǒng)中,并且可以在特定的工作環(huán)境中解決特殊的問題。始終合理地配置軟件結(jié)構(gòu),理順模塊之間的關(guān)系,以便從宏觀的角度完成對編程過程和結(jié)構(gòu)的控制。因此,實現(xiàn)了復(fù)雜問題的簡化,提高了單片機的編程效率,并且提高了解決復(fù)雜問題的能力。
二、SCM開發(fā)語言選擇
由于C語言在應(yīng)用方面的優(yōu)勢,因此被廣泛用于單片機的編程中。便捷的應(yīng)用程序庫功能易于實現(xiàn)復(fù)雜數(shù)據(jù)的結(jié)構(gòu)。但是C語言無法在時序控制中獲得優(yōu)勢,速度型算法不容易滿足單片機的要求。但是,由于C語言已包含在編程范圍內(nèi),因此其匯編混合編程模型已經(jīng)可以幫助彌補其語言的缺點。隨著單片機調(diào)試技術(shù)的發(fā)展,單片機已經(jīng)適應(yīng)了C語言程序控制,從而為編程提供了高級語言的可能性。
三、單片機編程的通用程序結(jié)構(gòu)
為了方便單片機的編程,通??梢詫⑵浞譃槎喾N結(jié)構(gòu)以適應(yīng)不同的功能要求。具體結(jié)構(gòu)如下。
3.1基本程序結(jié)構(gòu)
它的結(jié)構(gòu)包括兩部分:初始化程序和工作程序。上電后,初始化程序負責(zé)復(fù)位。首先執(zhí)行初始化程序。該程序只需要在工作前執(zhí)行一次即可。初始化程序運行以全面檢測和初始化各種端口和變量,計時器,ADC等。如有必要,可以建立不同的初始化分支,可以檢測和初始化不同的端子,并可以根據(jù)不同的條件選擇不同的初始化方法,例如冷啟動和熱啟動選項。主程序是一個循環(huán)程序,執(zhí)行單片機的工作內(nèi)容,并實現(xiàn)特定功能,如檢測,控制,通訊,人機交互等。每個功能都由子程序控制,主程序是調(diào)用這些程序以促進模塊化編程和應(yīng)用的指揮官。
3.2模塊結(jié)構(gòu)
在單片機程序中,主程序負責(zé)模塊的調(diào)度,而實現(xiàn)該功能的子例程則被合理地調(diào)度。這時,預(yù)定程序就是模塊。添加到此類模塊的是某些功能。模塊化程序結(jié)構(gòu)可以促進程序多個功能的集成,即在不增加主程序難度的前提下增加或減少模塊可以實現(xiàn)系統(tǒng)功能的改變。實現(xiàn)程序的優(yōu)化,便于維護,降低錯誤率。
3.3模塊控制機制
在計劃主程序時,并非所有模塊都適用,因此應(yīng)在一段時間內(nèi)對模塊進行控制,并且并非所有模塊都需要參與所有周期?;蛘吣承┠K的執(zhí)行并不頻繁,只有在滿足某些條件后才執(zhí)行。為了解決這個問題,可以為模塊設(shè)置一個標志。模塊應(yīng)在執(zhí)行前判斷自己的標志位。僅當(dāng)標志位可用時,才能執(zhí)行相關(guān)操作。如果標志位不可用,則應(yīng)執(zhí)行返回過程,并且不執(zhí)行相應(yīng)的模塊功能。
3.4優(yōu)先呼叫機制
調(diào)用模塊時,主程序應(yīng)具有不同的順序,因為模塊操作的優(yōu)先級將限制其應(yīng)用。如果沒有優(yōu)先級限制,則某些重要模塊將無法響應(yīng)或不及時。因此,主程序應(yīng)該能夠分析和選擇調(diào)用中模塊的優(yōu)先級,并根據(jù)不同的處理事件來區(qū)分模塊的優(yōu)先級。檢查模塊的功能,優(yōu)先級更高的模塊,然后查詢后續(xù)的功能模塊和類比。如果出現(xiàn)不可用情況,則執(zhí)行新一輪檢測,并啟動優(yōu)先級更高的模塊。
3.5前后結(jié)構(gòu)
前臺和后臺的結(jié)構(gòu)是引入了中斷機制,即根據(jù)實時事件和緊急情況進行區(qū)別對待,提出具有較高實時性的事件,讓它們對中斷作出響應(yīng),以及具有較低實時性的事件。 -time和任務(wù)被合并到主程序中,例如顯示刷新,掃描等。形成被中斷的前端和后端執(zhí)行程序結(jié)構(gòu)。前臺和后臺的程序應(yīng)根據(jù)大多數(shù)任務(wù)的需要執(zhí)行功能調(diào)度。注意正在使用的前臺和后臺任務(wù)的結(jié)構(gòu),并盡可能減少中斷服務(wù)程序的執(zhí)行時間。您可以在中斷服務(wù)程序中設(shè)置一些標志,然后后臺程序檢測這些標志以進行進一步處理。這可以在很大程度上防止前臺程序和后臺程序搶占彼此的處理器資源,從而導(dǎo)致某些低優(yōu)先級的任務(wù)阻塞。目前,隨著單片機的發(fā)展,一些單片機的中斷資源已經(jīng)大大豐富,所有任務(wù)都可以通過中斷來實現(xiàn)。這樣,我們可以讓中斷接管所有工作并廢除后臺程序,只保留必要的初始化程序即可。只需進入低功耗模式并等待中斷以處理其他任務(wù)即可。
責(zé)任編輯:YYX
-
單片機
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635298 -
編程
+關(guān)注
關(guān)注
88文章
3616瀏覽量
93734 -
程序
+關(guān)注
關(guān)注
117文章
3787瀏覽量
81043
發(fā)布評論請先 登錄
相關(guān)推薦
評論