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

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

3天內不再提示

單片機主程序為什么要死循環(huán)

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

這個說法不確切。因為單片機的工作本身就是一個自循環(huán)系統(tǒng)。

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

然后單片機要執(zhí)行一些順序結構的控制程序,這部分程序要完成基本的功能驅動,如顯示、接口連接等。

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

這部分的功能由主程序控制,一般是一個自循環(huán)的過程,可能就是題主說的是一個“死循環(huán)”,因為設計者就是要單片機在主程序中完成所設定的任務。

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

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

所以在單片機程序設計中要保證在任何干擾和錯誤操作的情況下都能回到自己的程序循環(huán)中。否則就會造成系統(tǒng)死機,因為單片機先死機了。

單片機主程序為什么要死循環(huán)

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

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

單片機程序是怎么樣的?

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

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

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

    關注

    6026

    文章

    44459

    瀏覽量

    631244
  • 程序
    +關注

    關注

    115

    文章

    3749

    瀏覽量

    80685
收藏 人收藏

    評論

    相關推薦

    單片機的中斷機制

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

    單片機燒錄程序用什么軟件

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

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序單片機開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使
    的頭像 發(fā)表于 09-02 09:47 ?499次閱讀

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

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

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

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

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

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

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

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

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

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

    分享一下用ST-LINK Utility識別單片機程序是否跑飛

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

    單片機芯片怎么寫入程序

    單片機芯片的程序寫入是通過將程序代碼寫入單片機芯片的非易失性存儲器(如Flash)中實現的。 在計算機科學和電子工程領域,單片機是一種集成電
    的頭像 發(fā)表于 01-05 14:06 ?7413次閱讀

    51單片機for循環(huán)結束之后還在運行

    當我們設計并編寫嵌入式系統(tǒng)時,使用51單片機編寫程序時,常常會用到循環(huán)結構來重復執(zhí)行一段代碼。然而,有時我們可能會遇到51單片機循環(huán)結束之
    的頭像 發(fā)表于 12-26 14:06 ?921次閱讀

    AvR單片機for循環(huán)需要幾個指令周期

    的Harvard架構。這種架構允許同時從程序存儲器(指令存儲器)和數據存儲器讀取指令和數據,從而提高了處理器的效率。 在AvR單片機中,for循環(huán)通常包含三個主要部分:初始化,循環(huán)條件
    的頭像 發(fā)表于 12-26 14:03 ?973次閱讀

    為什么HashMap會產生死循環(huán)呢?

    死循環(huán)問題發(fā)生在 JDK 1.7 版本中,造成這個問題主要是由于 HashMap 自身的運行機制,加上并發(fā)操作,從而導致了死循環(huán)。
    的頭像 發(fā)表于 12-21 09:06 ?617次閱讀
    為什么HashMap會產生<b class='flag-5'>死循環(huán)</b>呢?

    如何使得單片機的LED燈閃爍又不影響主程序運行?

    51單片機問題,緊急求助! 怎樣使得單片機的LED燈閃爍又不影響主程序運行??? 我想通過單片機接收串口命令讓一個LED燈閃爍,但同時又不影響其他
    發(fā)表于 11-06 07:18

    求助,關于STC51單片機主程序邏輯判斷問題

    求教,STC51單片機在寫主程序邏輯判斷的時候,用轉換后的AD值來做邏輯判斷,還是換算成Vin來進行邏輯判斷呢?
    發(fā)表于 11-02 07:21