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有低電平的時候,程式跳轉到這裡
微控制器外部中斷,微控制器外部中斷?
定時百器中斷是設定定時時間,到了該時間,就進行處理一次。可以處理按度鍵掃瞄,動態顯示,時鐘累加等問。外部中斷,是與外答接接觸,當中斷引腳為低電平時,進入中斷。如果你的微控制器沒內有專門的鍵盤中斷,可以使用外部中容斷來做鍵盤中斷。定時百器中斷是設定定時時間,到了該時間,就進行處理一次。可以處理按度鍵掃...
微控制器外部中斷0和外部中斷,微控制器外部中斷0和外部中斷
你想要的結果是不是應該要把while 1 中的第乙個time1 0去掉。不知你 time2 是否有用 ew free sn free 執行一次要多長時間?若時間很短的話,有可能一直執行下去,因你不斷地把 time1清0,time1 10永遠滿足 若時間較長的話,執行一次 ew free sn fre...
微控制器中斷問題,高手進,微控制器C語言外部中斷程式問題,高手進
中斷函式寫在主函式之外,中斷函式是不能由主函式呼叫的,但是中斷函式本身可以呼叫其他函式。微控制器一般都有若干個中斷源,每個中斷源對應乙個中斷入口位址,也叫做中斷向量,中斷向量空間很小,一般在中斷向量處放入一條跳轉指令指向中斷服務程式位址,當你用c語言宣告乙個中斷函式時,編譯器會幫你完成這些工作。以上...