微控制器的中斷問題,關於微控制器中斷的問題

時間 2021-08-13 15:53:56

1樓:

“那個中斷函式和主函式直接是什麼關係?為什麼寫在主函式後邊但是主函式又沒引用?”

中斷函式無需被顯式呼叫。當有相應的中斷產生時,程式會自動中止當前的執行、記錄位置,然後跳轉到相應的中斷入口處。而在中斷入口會進行二次跳轉,到程式中對應的中斷處理函式內並執行。

中斷處理函式執行完畢返回後,跳回到剛才中止執行的位置繼續執行。

“電平觸發方式應該是exo=0呀,為什麼那個主函式裡的exo=1??”

ex0=1;代表使能外部中斷0。後面的it0=1;才是設定觸發方式。這裡的程式設定為了下降沿觸發,的確與題目的要求不符。

“while(1),無限迴圈是咋回事”

while(1)意味著永遠滿足迴圈條件,因此會永遠執行後面大括號裡的函式體。這裡一般放的都是主迴圈體。如果沒有主迴圈體,微控制器執行一次主程式之後就會繼續向後執行跑到空白區,從而產生各種未知的執行結果並不斷復位。

2樓:匿名使用者

看得出來

你對cpu的中斷機制沒有弄清楚

中斷函式是由中斷事件直接呼叫的

所以主函式中沒有【引用】

.中斷函式和主函式沒有任何直接關係

唯一的間接關係就是:

在主函式中開放了中斷請求(exo=1)

如果沒有這行

中斷就不可能發生

中斷函式就永遠不被執行

按鈕就沒有任何反應

.【要產生一個低電平觸發的外部中斷請求】

這句話你要看完整啊,不要只看一段就亂說了

主語是什麼?別亂瞎說好不

這個低電平是由按鈕k1產生的

不是由**產生的

你的語文閱讀能力不咋地

.【那個主函式裡的exo=1】

不是用來觸發中斷的

而是用來開放中斷請求的(前面已經說過了)

**的右邊明明都寫了註釋呀

說明你沒看,或者就是看不懂

.【while(1),無限迴圈是咋回事】

你有沒有看迴圈體?

pi=0;

就是所有led都接地

就是點亮所有led呀

只要不按k1按鈕

所有led都亮著

.如果你沒有cpu的中斷概念

我上面說的,你肯定看不懂了,你得從0學起

我不可能在這裡給你補課的

3樓:覃學家康樂

樓上的沒理解你的硬體,你描述的也有問題,那種紅外遙控用的接收頭,接收到的是數字編碼,在有資料輸入的時候你測到4.5v是因為資料中有1有0.平均值是4.

5v。樓上的確是個高手,不過你不把電路說清楚也沒用啊。

4樓:沃寶橋雁芙

把所有需要產生中斷的引用一個邏輯晶片連線在一起,比如用一個多與非門,把要產生中斷的腳都接在輸入端,輸出端就接在int0或int1上,當輸入引腳任一一個腳變為低電平就觸發低電平中斷或邊延中斷,這樣一來不就完成了p0口和中斷的關聯了。

關於微控制器中斷的問題

5樓:查有福季嫣

外部中斷,計數器定時器中斷,串列埠行中斷。具有不一樣的中斷向量,具有不一樣的中斷優先順序,處理不一樣的中斷響應。中斷請求是根據你自身對中斷的配置好之後,只要發生符合條件的事件,就會觸發中斷,跳轉到中斷處理程式。

#include

void

inittimer0(void)//定時100usvoid

inituart(void)

void

initirt(void)

void

main(void)

void

timer0interrupt(void)interrupt

1//處理定時器1中斷的程式,當定時器計數到100us時程式跳到這裡void

uartinterrupt(void)

interrupt

4//當發生串列埠中斷時,程式跳轉到這裡

elseti=

0;}void

intinterrupt(void)

interrupt

0//當外部引腳p3^0有低電平的時候,程式跳轉到這裡

微控制器中斷的意思,51微控制器外部中斷到底什麼意思?

八哥說科技 中斷就是指處理機執行過程中,出現某些意外情況需主機干預時,機器能自動停止正在執行的程式並轉入處理新情況的程式,處理完畢後又返回原被暫停的程式繼續執行。中斷就是微控制器處理任務a時,發生了觸發中斷的條件停下來執行另一個任務b,觸發中斷的條件就屬於中斷源,任務b就是中斷任務 中斷服務函式 當...

微控制器串列埠中斷問題

樓主的問題我覺得應該出在這裡 該中斷函式是將接收的資料加一然後回顯,方法簡單明瞭,不錯。但是進入了死迴圈。void serial void interrupt 4 using 3 中斷內再出中斷,打亂了中斷服務程式的返回。if ti 修改的如下,希望樓主看完後明白這個是同步互斥的問題。void se...

51微控制器串列埠通訊中斷的問題,51微控制器串列埠通訊問題

肯定不會執行while ti 0 下面的程式的,因為你的中斷開著,程式跳到中斷服務程式裡面了,然後中斷處理結束了之後,ti自動清零了,所以一直在while ti 0 無限迴圈。程式裡面,既然開通了中斷功能,那你就一直使用中斷功能,為什麼你還要使用查詢功能呢?甚至有時把中斷給禁止了,這裡面容易出現問題...