1樓:
遇到中斷,程式執行中斷程式,中斷程式執行完成後,主程式繼續往下執行。
比方你正在喝茶,喝到一半時候,來個個**,這時候你得放下茶杯去接**,**接完後,剩餘一半的茶繼續喝。明白了嗎?
2樓:做而論道
微控制器裡面只有一個cpu,cpu只能執行一個程式。
cpu執行中斷程式時,就把主程式停下了。
因此,這才叫做「中斷」。
3樓:詹古香喬慧
主程程式出現多箇中斷按中斷優先順序處理,處理中斷程式後返回原中斷處繼續執行下面程式。
4樓:練鴻才荀悅
你還沒有理解中斷的意義!中斷產生了,微控制器就停止執行主函式,進入中斷執行中斷(中斷得開啟),當執行完中斷後,微控制器又回到主函式執行。就像我現在在看別人提出的問題,當我看到你的問題時(中斷產生),我就進來回答(執行中斷),回答完後我得繼續看別人提出的問題(返回主函式),我回去看別人提出的問題時既不會從頭看起,也不會往後看很多,而是從你問題後的問題繼續看!
為什麼微控制器中斷程式執行時主程式還在慢慢執行?初學~~~
5樓:匿名使用者
你從哪看出來程式還在執行的,你的中斷只有一句,馬上就執行完成了,就跳出中斷函式繼續執行之前的程式了,你要是想觀察中斷後主程式是否執行,應該用死迴圈或者延時吧程式指標留在中斷函式裡,比如你可以在中斷裡延時個2s,等跳出中斷後再觀察主程式跑到哪兒了就一目瞭然了
6樓:
前面的說的都有各自的說明,我想說的是,你選擇低電平觸發,你怎麼觸發它?
手動?還是一直給它一個低電平?如果一直給它低電平的話,因為中斷是隨機的,我們不可能知道它什麼時候會發生中斷,又因為你的終端函式太短了,執行一次中斷只需要一個機器週期,一直接地的話,隨時都在發生中斷,所以你原先設定的0.
5s變一次,就變成了差不多3s變一次,其實你仔細觀察它或許不是精確的幾s變一次,由於中斷的隨機性,導致你的0.5s的時間也發生了隨機性。
7樓:生活如歌
和前面的朋友說的一樣。你的中斷程式太短,執行時間很快,所以你感覺不到它的執行。
8樓:匿名使用者
微控制器是單執行緒的,不可能同時執行。
9樓:匿名使用者
建議先了解一下中斷的概念。它是處理異常事件時暫停正在執行的程式,跳轉到一個特定地址去響應異常事件。隨後繼續執行原來的程式。詳細概念到書上查查或網上搜一下
10樓:匿名使用者
遇到和您一樣的問題,請問您現在知道原因嗎?
51微控制器的中斷服務程式能否用主程式中的某一段代替?
11樓:匿名使用者
可以的,但是得判斷中斷標誌位,判斷有中斷時跳轉到reti,正常執行主程式時不跳轉。
其實還不如把主程式寫兩遍,一個是不帶rei的主程式,一個是中斷服務程式,後面要加reti
舉個例子,假設你可以判斷tf0(中斷0的溢位標誌)*** 000bh
ajmp main1
*** 0100h
main:
…………
main1:
…………
jb tf0,int0
…………
ajmp main
int0:
clr tf0
reti
end這下夠明白了吧
12樓:匿名使用者
可以啊,進入中斷後馬上返回主程式。在中斷程式中設定一個標誌位,在主程式中判斷此標誌位,如果標誌位改變,就證明已經進入過中斷,然後做出相應的處理就ok了。
用主程式代替後就可以像普通函式一樣返回。
微控制器中使用中斷程式會延長主程式執行的時間嗎
13樓:
可以的,但是得判斷中斷標誌位,判斷有中斷時跳轉到reti,正常執行主程式時不跳轉。 其實還不如把主程式寫兩遍,一個是不帶rei的主程式,一個是中斷服務程式,後面要加reti 舉個例子,假設你可以判斷tf0(中斷0的溢位標誌) *** 000bh ajmp main1 *** 0100h main: …… …… main1:
…… …… jb tf0,int0 …… …… ajmp main int0: clr tf0 reti end 這下夠明白了吧
51微控制器中中斷服務程式佔用時間不?
14樓:匿名使用者
在某種意思上,中
斷更具有實時性,中斷處理是根據程式段的大小花費時間的,中斷程式段如果比定時時間還長,那個這個定時在主程式裡失去意義了;比如中斷定時為10個機器週期,而中斷程式段需要執行11個機器週期,那麼意味著緊著的中斷程式失去了理論的實時性;cpu無法在設計的要求下執行指令,所以,一般情況下,要考慮程式段是否能在中斷定時時間內完成;若能完成,那麼使用非自動賦值時也存在時間差異,兩個高低8位的賦值語句也將至少浪費兩個機器(還需要放在中斷的最前面),所以要求時間較為精確時,一定要使用自動裝載方式,若是使用非中斷方式,c語言程式是無法保證的,要使用匯編,一個一個指令進行計算。
而所謂的查詢等待,cpu在這個時間段內就執行累加或自減計數,不做任何工作,這個時間就被白白的浪費了;
中斷程式中可以關閉定時器的,在主程式裡設定一個變數,不斷地查詢這個變數是否為要關閉定時器的值,而中斷程式可以為這個變數賦值。
如:...while(1)
}interrupt 1
15樓:匿名使用者
中斷程式是肯定要佔用時間的,在中斷中可以關閉定時器的;
一般可以在中斷中做計數,累加,設定標誌位,到主迴圈裡面查詢比較好,
當然主要是看你要求的時間精度以及允許的誤差了,如果不是特別高的話也是沒太大影響的,我用t1技術,t0定時,可以測65000hz內的頻率,誤差不查過50,反正可以達到我的頻率測量效果了
16樓:匿名使用者
如果要保證實時性,那就要對每條指令的執行時間相當的瞭解,只有這樣才能夠準確地進行時間的設定;
如果改用查詢等待,則在計時時會佔用主程式的時間,而利用計時器的中斷程式則可以和主程式同時進行,可以讓微控制器的效率更高,當然用查詢也是可以的,只是微控制器此時需要佔用主程式段的時間;
在中斷程式中和主程式中是一樣的,均可以對計時器進行關閉和開啟操作。
17樓:匿名使用者
需要佔用時間,時間的長短 由 中斷服務程式 的長短有關。
微控制器中斷語句結束後回到主程式**?
18樓:駿馳飛車族
在程式正常執行的時候,如果來了一箇中斷。那麼,微控制器會儲存當前地址然後立即進入中斷服務函式。執行完畢後,回到儲存的地址處也就是中斷髮生的地方繼續向下執行。
微控制器在空閒模式或是掉電模式下被中斷啟用的話,首先會執行中斷的服務函式。然後繼續向下執行。具體回到**關鍵要看你讓微控制器下一步做什麼。
如果你下面的程式直接指向sleep的話,那麼微控制器就會直接睡眠。如果指向其他服務函式的話,那麼微控制器就會執行其他的函式。直到執行到sleep的時候才再次睡眠。
否則繼續執行下一步的程式。
微控制器中中斷服務子程式沒執行完能強行跳回主程式嗎,若不能為什麼?若能,相應的中斷標誌位會被清零嗎
19樓:匿名使用者
當然可以強行跳回主程式,不影響中斷標誌位的清零,只要進入中斷,該硬體清零的就自動清零,但強行跳回主程式,微控制器會認為一直在執行中斷程式,因此以後有中斷髮生時也不會再進入中斷程式。所以不能這樣做,用reti就會跳回主程式。
20樓:寡人天才
goto語句能隨便跳
硬體清零的中斷標誌會清0
軟體手動清0的中斷標誌不會自動清0
急求微控制器外部中斷程式,51微控制器外部中斷程式
這相不用中斷程式,就是一個按鍵掃描就行了。bit sign 0 void main void ww interrupt 0我只是簡寫一下,大概就是這個意思 第一次按下數碼管顯示,再按一下數碼管不顯示。希望對你有所幫助!51微控制器外部中斷程式 去抖動抗干擾,程式,或 加個104 電容。急求c程式!5...
51微控制器外部中斷到底什麼意思,51微控制器中的外部中斷服務程式入口0和1有什麼不同
51微控制器有兩個外部中斷申請輸入端 int0 和 int1 這兩個引腳對應兩個中斷入口,只有這兩個引腳上的電平變化,才會觸發相應的中斷 51微控制器中的外部中斷服務程式入口0和1有什麼不同 你是哪個型別的51微控制器 一般是指 兩個中斷的區分 51微控制器有幾個中斷源,分別是什麼?一共5種中斷 優...
什麼是中斷,51子系列微控制器的中斷源有哪些,其優先順序是怎麼樣確定的中斷返回指令和子程式返回指令的差
51微控制器中斷源有 1.兩個外部中斷 init0 init1 分別由ie0 和ie1兩位控制開啟 2.定時器中斷t0 和t1 3.串列埠中斷 優先順序由ip暫存器控制,只能分兩級,高或低。優先順序相同的中斷源也分高低,順序為 外部中斷0 定時器中斷0 外部中斷1 定時器中斷1 序列中斷 中斷返回是...