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

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

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

單片機(jī)主程序?yàn)槭裁匆姥h(huán)

姚小熊27 ? 來源:電工之家 ? 作者:電工之家 ? 2020-07-25 11:43 ? 次閱讀

這個(gè)說法不確切。因?yàn)?a target="_blank">單片機(jī)的工作本身就是一個(gè)自循環(huán)系統(tǒng)。

單片機(jī)從啟動(dòng)開始,首先要建立一個(gè)系統(tǒng)的工作初始環(huán)境和基本數(shù)據(jù),這部分程序稱為初始化。

然后單片機(jī)要執(zhí)行一些順序結(jié)構(gòu)的控制程序,這部分程序要完成基本的功能驅(qū)動(dòng),如顯示、接口連接等。

然后是單片機(jī)的主程序,這部分程序是完成單片機(jī)在設(shè)備中的主要功能。

這部分的功能由主程序控制,一般是一個(gè)自循環(huán)的過程,可能就是題主說的是一個(gè)“死循環(huán)”,因?yàn)樵O(shè)計(jì)者就是要單片機(jī)在主程序中完成所設(shè)定的任務(wù)。

在主程序中單片機(jī)還要根據(jù)需要和外部指令進(jìn)行子程序調(diào)用,數(shù)據(jù)的輸入和控制,接口的控制等等。這些子程序完成后,還必須回到主程序,以保證主控工作任務(wù)的完成。

所以,應(yīng)該說單片機(jī)的程序是一個(gè)完整的自控程序,它必須回到主程序控制中循環(huán)運(yùn)行。

所以在單片機(jī)程序設(shè)計(jì)中要保證在任何干擾和錯(cuò)誤操作的情況下都能回到自己的程序循環(huán)中。否則就會(huì)造成系統(tǒng)死機(jī),因?yàn)閱纹瑱C(jī)先死機(jī)了。

單片機(jī)主程序?yàn)槭裁匆姥h(huán)

單片機(jī)程序是從上到下執(zhí)行的,到底了需要從頭開始

單片機(jī)集成了CPU、RAMROM、GPIO、定時(shí)器、中斷等等,是一個(gè)“微型的小電腦”。我們編寫的程序經(jīng)過編譯后,需要下載到單片機(jī)的ROM。上電后,單片機(jī)就可以讀取并執(zhí)行ROM中的程序了。我們編寫的程序經(jīng)過編譯后,其實(shí)就是一些單片機(jī)可以識(shí)別和執(zhí)行的指令,單片機(jī)的CPU只有一個(gè)線程,一次只能執(zhí)行一條指令,指令從上到下執(zhí)行,到了最后需要跳回最前面才可以生新執(zhí)行,所以單片機(jī)的主程序是一個(gè)死揗環(huán)。

單片機(jī)程序是怎么樣的?

單片機(jī)上電后,需要進(jìn)行初始化,初始化只需要執(zhí)行一次就可以了,所以初始化程序一般不會(huì)放入主程序的死循環(huán)中。主程序需要不斷的連續(xù)執(zhí)行的,所以會(huì)放入到一個(gè)死循環(huán)中去。

由此可見,單片機(jī)的程序是從上到下順序執(zhí)行的,需要一個(gè)一個(gè)任務(wù)排隊(duì)運(yùn)行。單片機(jī)還有一個(gè)中斷系統(tǒng),如果發(fā)生需要即時(shí)響應(yīng)的事件,可以把主程序暫停打斷,先把中斷事件處理完,再返回主程序繼續(xù)執(zhí)行。就像你正在開會(huì)的時(shí)候,突然老板來電話了,您就需要把會(huì)議暫停,先接完老板電話,然后繼續(xù)會(huì)議。當(dāng)然中斷事件也是可以屏蔽的,就像開會(huì)的時(shí)候來了一個(gè)騷擾電話,您可以不理它,或者掛斷它。

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

    關(guān)注

    6037

    文章

    44569

    瀏覽量

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

    關(guān)注

    117

    文章

    3789

    瀏覽量

    81134
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)怎么寫入程序

    程序通常涉及以下幾個(gè)步驟: 選擇單片機(jī)和開發(fā)環(huán)境 : 確定項(xiàng)目需求,選擇合適的單片機(jī)型號(hào)。 安裝相應(yīng)的開發(fā)環(huán)境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機(jī)連接到開發(fā)板或
    的頭像 發(fā)表于 10-21 11:21 ?512次閱讀

    單片機(jī)的中斷機(jī)制

    單片機(jī)的中斷機(jī)制是一種重要的處理方式,它允許單片機(jī)在執(zhí)行主程序的過程中,能夠暫停當(dāng)前任務(wù),轉(zhuǎn)而處理外部或內(nèi)部緊急事件。這種機(jī)制極大地提高了系統(tǒng)的響應(yīng)速度和處理能力,使得單片機(jī)在各種應(yīng)用
    的頭像 發(fā)表于 10-17 18:03 ?784次閱讀

    單片機(jī)燒錄程序用什么軟件

    單片機(jī)燒錄程序單片機(jī)開發(fā)過程中的一個(gè)重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機(jī)的ROM中,以實(shí)現(xiàn)對(duì)
    的頭像 發(fā)表于 09-02 10:05 ?1345次閱讀

    單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎

    單片機(jī)燒錄原理 單片機(jī)燒錄是指將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機(jī)的存儲(chǔ)器中,使其能夠按照程序的指令運(yùn)行。這個(gè)過程通常需要使用燒錄器
    的頭像 發(fā)表于 09-02 09:54 ?525次閱讀

    單片機(jī)燒錄程序的基本步驟是什么

    單片機(jī)燒錄程序單片機(jī)開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機(jī)內(nèi)部的存儲(chǔ)器中,使
    的頭像 發(fā)表于 09-02 09:47 ?1134次閱讀

    stm8s105給CPU發(fā)送請(qǐng)求后,如果主CPU不給答復(fù),程序就會(huì)一直在(1)處進(jìn)入死循環(huán),怎么解決?

    我參考別人的UART2的發(fā)送和接收程序入下(與主CPU通信)。現(xiàn)在面臨的問題是,在我給CPU發(fā)送請(qǐng)求后,如果主CPU不給答復(fù),那么我的程序就會(huì)一直在(1)處進(jìn)入死循環(huán),我該怎么修改跳出循環(huán)
    發(fā)表于 05-14 08:13

    STM32F107中斷死循環(huán)的原因?

    STM32F107,中斷死循環(huán)
    發(fā)表于 05-11 06:31

    STM32L使用模擬仿真時(shí),進(jìn)入SystemClock_Config()后程序一直死循環(huán)在等待HSI ready的循環(huán)中,為什么?

    ,配置好.ini文件,編譯OK,然后點(diǎn)擊DEBUG按鈕,代碼可以順利執(zhí)行到上面的第5行,但是在進(jìn)入 SystemClock_Config()后,程序一直死循環(huán)在等待HSI ready的循環(huán)中,如下
    發(fā)表于 05-09 06:37

    聊聊MCU死循環(huán),用for(;;)還是while(1)?

    首先,問大家一個(gè)問題:你們寫單片機(jī)程序死循環(huán)】時(shí),喜歡用for(;;)還是while(1)?快來為你喜歡用的【死循環(huán)】打call,評(píng)論區(qū)等你哦~一位工程師發(fā)現(xiàn),國(guó)外工程師在給demo
    的頭像 發(fā)表于 04-29 08:10 ?1392次閱讀
    聊聊MCU<b class='flag-5'>死循環(huán)</b>,用for(;;)還是while(1)?

    如何跳出雙層循環(huán),加密程序等問題?

    進(jìn)入 KEY_Deal()//假設(shè)這個(gè)是按鍵處理程序 方案2:if(SWITCH==0;)return;//這是主程序掃描程序之一,獲取鍵值后賦值SWITCH,相當(dāng)于打開按鍵處理入口,讓單片機(jī)
    發(fā)表于 04-26 07:53

    STM8S003看門狗在主循環(huán)老是復(fù)位怎么解決?

    第一個(gè)圖片畫圈的位置),其他我嘗試過修改定時(shí)器4進(jìn)入時(shí)間和看門狗復(fù)位時(shí)間均沒有效果。大家?guī)臀铱聪略趺椿厥?,謝謝了。還有個(gè)我主程序有3個(gè)嵌套死循環(huán),1-2循環(huán)沒有任何問題,到最后這個(gè)循環(huán)
    發(fā)表于 04-25 08:18

    為何國(guó)外工程師偏愛使用for(;;)來實(shí)現(xiàn)MCU死循環(huán)?

    一位工程師發(fā)現(xiàn),國(guó)外工程師在給demo在做死循環(huán)時(shí)用的是for(;;),而不是常用的while(1)。這僅僅是個(gè)人習(xí)慣的問題,還是有更深層次的含義?
    發(fā)表于 04-01 11:26 ?664次閱讀
    為何國(guó)外工程師偏愛使用for(;;)來實(shí)現(xiàn)MCU<b class='flag-5'>死循環(huán)</b>?

    STM32F412RET6串口輪詢發(fā)送阻塞等待TC,導(dǎo)致程序陷入死循環(huán)怎么解決?

    測(cè)試時(shí),發(fā)現(xiàn)CPU程序運(yùn)行卡死了,通過STM32 ST-LINK Utility工具,排查到了程序陷入死循環(huán)
    發(fā)表于 03-21 07:51

    什么是單板機(jī)的監(jiān)控程序

    初始化程序:用于設(shè)置單片機(jī)的初始狀態(tài),包括初始化寄存器、設(shè)置中斷向量、啟動(dòng)時(shí)鐘等。   主循環(huán)程序:監(jiān)控程序
    的頭像 發(fā)表于 02-02 17:15 ?1377次閱讀
    什么是單板機(jī)的監(jiān)控<b class='flag-5'>程序</b>?

    分享一下用ST-LINK Utility識(shí)別單片機(jī)程序是否跑飛

    最近有網(wǎng)友大概問了這樣的問題:單片機(jī)項(xiàng)目偶爾經(jīng)常出現(xiàn)異常,不知道是程序跑飛了,還是進(jìn)入某個(gè)死循環(huán)了。
    的頭像 發(fā)表于 01-09 11:40 ?3516次閱讀
    分享一下用ST-LINK Utility識(shí)別<b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>是否跑飛