1樓:網友
while(1)是死迴圈的意思,中斷子程式會從ea=1,et1=1,tr1=1,設定完後開始執行,一直到ea,et1,tr1中任乙個為0結束,中斷是乙個迴圈執行的過程,在整個過程中,只要ea,et1,tr1都為1,則中斷會一直執行。
51微控制器 中斷程式,我在主函式里if前加了while大迴圈了,while(1){if…………}可
2樓:網友
**看不清楚,主程式加while迴圈外還有初始化是不是也有問題?
加一條scon=0x50;試試。
3樓:揮劍問情為何物
因為你的串列埠就沒有初始化,void init();只是宣告瞭函式,並沒有執行init(),把void 刪掉應該就可以了。
4樓:網友
……你這程式能編譯通過?
51微控制器定時問題,為什麼程式那兒要加乙個while(1);
5樓:冉易雲
main函式中while(1)之前的**是賦初值操作,是為中斷呼叫使用的。
之所以有while(1)是為了使得程式一直在執行,所以才有中斷操作的不斷執行,否則程式只執行一次就終止啦。
6樓:網友
如果沒有while(1);程式直接執行完了就什麼都不做了。
每個程式都有乙個主迴圈,而且是死迴圈。
我們作業系統也是。
7樓:地球
while(1)是乙個死迴圈,就是讓微控制器一直執行while(1);或者執行中斷程式。如果不加的話,程式會不斷的復位執行main函式,這樣中斷就進不去了。
8樓:網友
我認為,當執行完tr1=1後,會先執行while(1),因為你初始化定時器時,設定的定時時間是50ms,只有等while(1)迴圈時間到了50ms,才會去執行中斷服務程式。
在中斷主程式的最後有一行**while(1);是什麼意思~~
9樓:匿名使用者
迴圈條件判斷。當值=1時執行 void mm(void) interrupt 1 。否則執行 靜態塊。
10樓:那叫乙個可愛
是「停留在此,等待中斷」的意思。這是個定時器定時中斷,定時時間到了,口連線led的話,它會閃爍。main()是不斷迴圈這個定時過程的~
11樓:匿名使用者
while(1);是乙個死迴圈,是為了讓程式阻塞在那兒而不要退出。
51微控制器主函式while(1)中的變數的值不會同步到中斷函式中,該怎麼辦
12樓:衷琪
試試把tt 、t宣告為 volatile 型別。
如volatile unsigned char tt;
volatile 的意思是「易失的,易改變的」。這個限定詞的含義是向編譯器指明變數的內容可能會由於其他程式的修改而變化。通常在程式中申明瞭乙個變 量時,編譯器會盡量把它存放在通用暫存器中,例如ebx。
當cpu把其值放到ebx中後就不會再關心對應記憶體中的值。若此時其他程式(例如核心程式或乙個 中斷)修改了記憶體中它的值,ebx中的值並不會隨之更新。為了解決這種情況就建立了volatile限定詞,讓**在引用該變數時一定要從指定位置取得其 值。
13樓:匿名使用者
主函式的引數值是不會跳轉到中斷函式里面的,這是中斷函式執行其中要注意到的。試下利用模組化程式設計設定乙個子函式吧!
51 微控制器 主函式的while迴圈中檢測到外部中斷1 的標誌位後用串列埠傳送資料,然後程式跑飛
14樓:網友
中斷是乙個獨立並有高優先權的系統,main中的程式不能影響中斷。
51微控制器中斷while解釋
15樓:網友
微控制器主程式一般都是有乙個while死迴圈,這是微控制器程式特有的特性。以保敬伏證微控制器程式執行時不亮巖攜跳出程式,或者說不讓程式結束。以便做一些重複性的自動控制。
在這裡,主程式中只需要對定時器中斷進行棗旁處理。所以這裡主程式中定時器初始設定後,執行到while(1)的時候,就在那裡迴圈,相當於什麼也不做,就等著定時器中斷的產生,然後跳到定時處理函式執行。
51微控制器如何跳出while(1)死迴圈 執行下乙個功能
16樓:網友
在while(1)迴圈中加個跳出迴圈的條件。
if(..break;
17樓:橋笛斐思菱
挑不出來吧,顯示時,不用這樣迴圈的,把display裡面的while(1)這個函式去掉試下。
51微控制器中的中斷程式到底是怎麼執行的?
18樓:生活如歌
每一次定時的50ms時間到後變數t加1.而迴圈程式裡面t=20(1s)後讓數碼管顯示乙個不同的數。
19樓:陵少
其實是中斷返回,當第一次中斷完成,數碼管就由原先的0變為1,然後程式就回到了while那裡,也就是斷點,然後等待下一次的中斷請求,也就是50毫秒,50毫秒一到,執行第二次中斷,
20樓:網友
死迴圈不是微控制器宕機了,而是一直在這個迴圈裡工作。它的定時器也一直在工作過程中,從你的程式看,你的顯示雖然閃,但是數字是不變的,你少了乙個{}應為。
if(t==20)}
21樓:網友
51微控制器中斷分外部中斷和內部定時器中斷,外部中斷是指在接收到外部中斷觸發訊號(中斷管腳電平發生變化)後程式跑到對應的中斷服務程式處執行,執行完畢後返回之前正在執行的地方繼續;內部中斷指由內部定時器觸發的中斷,比如定時器0設定為10ms定時,則每10ms進入中斷服務程式一次。
22樓:網友
開啟中斷後程式在中斷產生後會自動的跳轉到相應的中斷函式里,所以你的燈閃了,main裡while(1){}中是常規任務,中斷是意外事件或者未知又會產生的事件。
你比如你正在睡覺,有人打你的**這時候你會醒來去接**,接玩**繼續睡覺。
程式也就這麼回事,只不過你是大腦在控制,而程式是mcu在控制。
23樓:
你的問題是沒理解中斷的含義。
中斷,字面上意思就是(當有更緊急的事情出現的時候)終止現在手頭上的事情去忙更緊急的事情。在程式裡,就相當於當某個條件成立時,停止正在執行的**(手頭上的事情),去執行另一段**(更緊急的事情),只是這個過程是硬體自動完成的,而不是像你平時呼叫函式那樣顯式的去呼叫它。
你的程式裡用到了定時器0(自己去看定時器的工作原理),那你只要將定時器0初始化,並且在函式void exter() interrupt 1裡寫下你希望當定時器0中斷的時候執行的**就行了。當你啟動定時器0的時候,它有點像後臺執行的乙個程式,當它歸0的時候,就會置相應的中斷標誌為1,而cpu會不時的檢測這些中斷標誌位,當發現某個標誌位為1的時候,表明有中斷請求,cpu會自動轉到相應的中斷服務程式中去。
微控制器時間中斷,51微控制器中的定時器中斷是怎麼用的 ?
while 1 在那 會使微控制器停在那 相當於是等待當中斷來臨時 執行中斷 下面那個就是當到50ms的時候 執行計時器1中斷如果沒有那個while 1 則主程式就執行完了 中斷會沒有作用中斷和程式主程式各個執行是同步的 因為你把那個et0開了 則就有時鐘中斷了 當到了50ms 中斷就會自動作用 停...
51微控制器中的定時器中斷是怎麼用的
如下 實現led燈一秒亮滅閃爍 void main tmod 0x01 設定定時器0為工作方式1 m1 m0為01 th0 65536 45872 256 裝初值11.0582晶振定時50ms數為45872 tl0 65536 45872 256 ea 1 開總中斷 et0 1 開定時器0中斷 tr...
求微控制器中圍繞中斷的程式題目?急求
找了幾個定時 計數器的題目,外部中斷應該很簡單。1 利用定時 計數器t0從p1.0輸出週期為1s的方波,讓發光二極體以1hz閃爍,設晶振頻率為12mhz。2 利用定時 計數器t1產生定時時鐘,由p1口控制8個發光二極體,使8個指示燈依次一個一個閃動,閃動頻率為10次 秒 8個燈依次亮一遍為一個週期 ...