0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機的程序結(jié)構(gòu)設(shè)計

姚小熊27 ? 來源:宇凡微 ? 作者:宇凡微 ? 2020-10-14 12:05 ? 次閱讀

單片機的應(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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635298
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3616

    瀏覽量

    93734
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81043
收藏 人收藏

    評論

    相關(guān)推薦

    PIC單片機程序設(shè)計的基本結(jié)構(gòu)框架

    為了快速掌握PIC單片機程序的基本結(jié)構(gòu),這里給出一個典型的程序結(jié)構(gòu)框架。建立源程序時首先用偽指令TITLE提供
    發(fā)表于 11-04 17:18 ?1595次閱讀

    操作系統(tǒng)結(jié)構(gòu)設(shè)計

    操作系統(tǒng)結(jié)構(gòu)設(shè)計   操作系統(tǒng)有多種實現(xiàn)方法與設(shè)計思路,下面僅選取最有代表性的三種做一簡單的敘述。   1.整體式系統(tǒng)結(jié)構(gòu)設(shè)計 這是最常用的一種組織方式,它常被譽為“大雜燴”,也可說,整體式系統(tǒng)結(jié)構(gòu)
    發(fā)表于 09-13 10:10

    【每周一練】 第二章 串口通信程序結(jié)構(gòu)設(shè)計

    第二章 串口通信程序結(jié)構(gòu)設(shè)計/*更新中。。。。。。*/2.1 半工通信程序結(jié)構(gòu)2.2 雙工通信程序結(jié)構(gòu)2.3 ASCII數(shù)據(jù)傳輸2.4 HEX數(shù)據(jù)傳輸2.5 Unicode碼數(shù)據(jù)傳輸
    發(fā)表于 02-17 20:23

    軟件結(jié)構(gòu)設(shè)計

    軟件結(jié)構(gòu)設(shè)計,,
    發(fā)表于 09-26 13:55

    單片機STM32入門——(1)程序結(jié)構(gòu) 精選資料推薦

    單片機之STM32入門——(1)程序結(jié)構(gòu)程序結(jié)構(gòu)1.初識單片機2.GPIO的使用3.程序結(jié)構(gòu)程序結(jié)構(gòu)
    發(fā)表于 08-24 07:03

    如何對單片機程序結(jié)構(gòu)進行優(yōu)化

    如何對單片機程序結(jié)構(gòu)進行優(yōu)化?如何對單片機代碼進行優(yōu)化?
    發(fā)表于 09-22 09:07

    BUCK降壓拓撲結(jié)構(gòu)設(shè)計

    ?感謝閱讀本文,在接下來很長的一段時間里,我將陸續(xù)分享項目實戰(zhàn)經(jīng)驗。從電源、單片機、晶體管、驅(qū)動電路、顯示電路、有線通訊、無線通信、傳感器、原理圖設(shè)計、PCB設(shè)計、軟件設(shè)計、上位等,給新手綜合學(xué)習(xí)
    發(fā)表于 11-11 06:13

    單片機程序結(jié)構(gòu)

    在我們設(shè)計的早年色選機系統(tǒng)中,單片機程序結(jié)構(gòu)采用固定周期循環(huán)的程序結(jié)構(gòu)。固定循環(huán)周期是200us。在這固定的200us時間內(nèi)處理單片機外圍的各種任務(wù),這些任務(wù)可以處理按鍵輸入、LED顯
    發(fā)表于 11-24 07:27

    軸系結(jié)構(gòu)設(shè)計實驗

    實驗六 軸系結(jié)構(gòu)設(shè)計實驗一、實驗?zāi)康模?熟悉并掌握軸系結(jié)構(gòu)設(shè)計中有關(guān)軸的結(jié)構(gòu)設(shè)計、滾動軸承組合設(shè)計的基本方法。 二、實
    發(fā)表于 03-13 19:04 ?5.8w次閱讀
    軸系<b class='flag-5'>結(jié)構(gòu)設(shè)計</b>實驗

    PIC單片機程序設(shè)計基礎(chǔ)格式

    PIC單片機程序設(shè)計基礎(chǔ)格式 為了快速掌握PIC單片機程序的基本結(jié)構(gòu),這里給出一個典型的程序結(jié)構(gòu)
    發(fā)表于 05-17 09:07 ?952次閱讀

    PIC單片機程序結(jié)構(gòu)框架

    為了快速掌握PIC單片機程序的基本結(jié)構(gòu),這里給出一個典型的程序結(jié)構(gòu)框架。
    發(fā)表于 06-27 13:41 ?5574次閱讀

    51單片機的大體程序結(jié)構(gòu)資料免費下載

    這個程序,來體現(xiàn)所需要的結(jié)果;和只需要執(zhí)行一次程序就得到結(jié)果的C語言程序不同,單片機需要一次一次的循環(huán)執(zhí)行程序,故
    發(fā)表于 09-02 17:28 ?2次下載
    51<b class='flag-5'>單片機</b>的大體<b class='flag-5'>程序結(jié)構(gòu)</b>資料免費下載

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

    經(jīng)過這幾天做的程序,和以前做電子鐘時的感悟,現(xiàn)在對單片機的整個程序結(jié)構(gòu)做一下總結(jié)。相信這個總結(jié)是很有必要的,在組織大型復(fù)雜程序結(jié)構(gòu)時需要有一個正確的理論指導(dǎo)。
    發(fā)表于 08-12 17:33 ?4次下載
    如何使用<b class='flag-5'>單片機</b>的定時器分配任務(wù)的<b class='flag-5'>程序結(jié)構(gòu)</b>總結(jié)

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

    單片機之STM32入門——(1)程序結(jié)構(gòu)程序結(jié)構(gòu)1.初識單片機2.GPIO的使用3.程序結(jié)構(gòu)程序結(jié)構(gòu)
    發(fā)表于 11-18 20:51 ?10次下載
    <b class='flag-5'>單片機</b>STM32入門——(1)<b class='flag-5'>程序結(jié)構(gòu)</b>

    FPC的結(jié)構(gòu)設(shè)計.zip

    FPC的結(jié)構(gòu)設(shè)計
    發(fā)表于 03-01 15:37 ?1次下載