51微控制器加不加while 1 都能無限迴圈?不是說不加不迴圈嗎

2022-08-19 21:57:15 字數 2706 閱讀 3177

1樓:正經小豆

1、首先回答你,這個while(1)必須加,這點不用懷疑;

2、為什麼去掉還能執行,你檢查下遮蔽後是否有重新編譯重新燒錄程式,如果沒有那麼現執行的還是以前的程式。

3、不加while(1)的危害,在執行完第二個delay()函式後,pc指標(程式執行指標)即跳出了main函式,此刻程式指標就進入了一個未知的非法地址,也就是通常所說的程式跑飛了。那麼跑飛了後為什麼還能正常執行,這個原因是有的晶片在設計時有所就是對pc指標出了main函式後,進行了復位保護。

4、總結,就是必須加上while(1),不論是否有復位保護。

2樓:月光星屑

keil會幫你加上,當main函式執行完後,會執行ret,跳轉到0000h地址,有的編譯器可能不會加ret,就只執行一次,不過還是建議加上while(1)比較安全

keil可以把c轉匯編,看一下就知道了

3樓:匿名使用者

不加while(1),程式邏輯上肯定是執行一次的,這個不需要懷疑,現出現迴圈需要分析一下問題:

1:確認是否程式編譯成功?

2.確認是否模式開啟開門狗

3.外部是否存在定時復位電路

4樓:匿名使用者

程式從主函式main()開始執行,執行完後將從新開始。想不迴圈在最後加個while(1);就好

5樓:匿名使用者

你註釋掉後編譯錯誤 根本沒把程式燒進去 微控制器裡還是原來的程式- -

6樓:匿名使用者

不加while(1),程式容易跑飛

51微控制器,為什麼有些程式不用while() { } 也會自動迴圈執行 下去。。?

7樓:智航小科技

程式跑完了,微控制器是要復位的,不用while(),其實並不是自動迴圈下去,想檢測是不是自動迴圈很簡單。你用一個值不斷累加,看是在增加還是不停的清零。

微控制器程式:while(1) ; //無限迴圈,防止程式跑飛。什麼意思?

8樓:匿名使用者

這一般用在僅僅依靠中斷工作的場合,也就是說,微控制器做完初始化後,之後的所有工作完全由中斷產生時才完成相應的工作,比如日曆等等。如果沒有這句的話,程式就如流水一樣永不回頭的走了,執行完最後一句就壽終正寢。

9樓:匿名使用者

就是微控制器順著程式執行一遍後再重複執行程式,如此往復,你的程式就可以一直執行下去啦!

while(1)裡面通常放主要執行的程式

10樓:

是防止main()返回。

嵌入式中main是不能返回的。不同的c語言實現的startup code會有不同的表現,有的是在call _main後jmp,而有的是jmp 0,等等這些會導致不可預料的結果。

在我們寫的c語言後轉換成彙編,沒有寫程式的部分例如全1或者全0區域,程式執行到這裡如果在往下執行的話,就會有可能造成意料不到的結果。

11樓:

while(條件),while函式中的條件若為真,也即為1,將一直在函式體內迴圈。所以,將條件直接置1,就是提供一個無限迴圈,讓函式一直在while中執行。

12樓:匿名使用者

也就是這個迴圈的不停止的

微控制器main函式裡如果不用while(1)那麼其中的程式只執行一次嗎

13樓:匿名使用者

keil有點特殊,如果不加這個語句,程式在執行結束後又重新跳轉到開頭處重新執行。其他的編譯器就不知了。

14樓:匿名使用者

這是各中微控制器自身決定的。有的微控制器程式內如果沒有迴圈程式,那它會從頭執行到最後,然後返回最開始繼續執行。一直重複。

而有的微控制器再執行一次之後,就會停止。

有的則是執行完後可能會進入無序執行狀態,就只不知道程式跑**去了!

所以,在寫微控制器程式的時候,最好是加上while迴圈,即便你的程式只執行一次,也要在最後加上while(1);使其一直指向這個語句而不會出現誤操作。

15樓:銉句竴孌墊儏鉂

實測 keil5 stm32f103zet6 不加while(1) main迴圈執行

51微控制器定時問題,為什麼程式那兒要加一個while(1);

16樓:冉易雲

main函式中while(1)之前的**是賦初值操作,是為中斷呼叫使用的。

之所以有while(1)是為了使得程式一直在執行,所以才有中斷操作的不斷執行,否則程式只執行一次就終止啦。

17樓:匿名使用者

如果沒有while(1);程式直接執行完了就什麼都不做了。

每個程式都有一個主迴圈,而且是死迴圈。

我們作業系統也是。

18樓:地球

while(1)是一個死迴圈,就是讓微控制器一直執行while(1);或者執行中斷程式。如果不加的話,程式會不斷的復位執行main函式,這樣中斷就進不去了。

19樓:匿名使用者

我認為,當執行完tr1=1後,會先執行while(1),因為你初始化定時器時,設定的定時時間是50ms,只有等while(1)迴圈時間到了50ms,才會去執行中斷服務程式。

學會51微控制器能做什麼工作,用51微控制器都能做什麼工程?

學會51微控制器可以做很多工作,簡單列舉一些吧。1 工業控制領域方面,很多裝置的底層控制都是採用51微控制器實現的。2 儀器儀表方面,51微控制器由於成本低廉,所以很受該行業歡迎。3 汽車行業,一輛汽車的控制mcu很多,51微控制器也佔有一席之地 4 通訊方面,51微控制器在 紅外 射頻等方面都有很...

用51微控制器IO口驅動3mmLED燈,要加多大的限流電阻

1 你沒講清楚具體的連線方式 是io口的 高電平驅動燈亮,此時二極體加限流電阻接地 還是io的低電平驅動燈亮,此時二極體 加限流電阻接 5v。2學習51,數位電路切忌不要忘了電流,這兩種方式的電流是不一樣的,請到51 的資料手冊的引數裡面查詢,比如at89s52的英文手冊 找到直流特性 dc cha...

51微控制器通過計數器中斷實現數字的加減1和外部中斷清0功

看看這個 例項,彙編51微控制器接四個數碼管從0000顯示到9999,採用外部int0中斷一次加1,int1中斷清零,用組合語言。51微控制器,用外部中斷0和外部中斷1實現 1個七段led數碼管顯示值加1和減1。程式怎麼編?給你講思路吧,先設定外部中段,開啟中斷開關。主程式可以利用一個for迴圈,每...