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

PIC單片機(jī)程序設(shè)計(jì)基礎(chǔ)格式
PIC單片機(jī)程序結(jié)構(gòu)框架
51單片機(jī)的大體程序結(jié)構(gòu)資料免費(fèi)下載

如何使用單片機(jī)的定時(shí)器分配任務(wù)的程序結(jié)構(gòu)總結(jié)

單片機(jī)STM32入門——(1)程序結(jié)構(gòu)

評論