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 無限迴圈。程式裡面,既然開通了中斷功能,那你就一直使用中斷功能,為什麼你還要使用查詢功能呢?甚至有時把中斷給禁止了,這裡面容易出現問題...