微控制器呼叫中斷服務子程式和呼叫子程式的區別是什麼

2021-03-04 04:53:45 字數 5389 閱讀 7119

1樓:軒轅幻桃仰頡

中斷服務子程bai序入口地du址相對某一中斷是固zhi定的,呼叫子程式的偏dao移專地址是隨機的,基本過程差不屬多,返回時,中斷服務子程式用的是reti

呼叫子程式是ret

呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。

我說的是80c51的

微控制器呼叫中斷服務子程式和呼叫子程式的區別,儘量詳細,急...

2樓:匿名使用者

中斷程式會打斷普通程式執行,即中斷優先。

3樓:水野未知

其實區別不大。基複本過程都一樣。制呼叫子程式很簡單,也不用講了。

中斷服務子程式特殊點。一般就是檢測到中斷標誌位了,就去呼叫一下。高階點的微控制器有硬體中斷的功能。

只要中斷髮生了,就自動進入中斷子程式,軟體上都不用呼叫。直接把中斷服務子程式掛到中斷向量上去就可以。還有一點區別就是返回的指令一般不一樣。

常見的比如,一個用rti,另一個是rtc.

4樓:走路的蔥哥

中斷服務子程式入口地址相對某一中斷是固定的,呼叫子程式的偏移地址是內隨機的,基本過程差不多容,返回時,中斷服務子程式用的是reti 呼叫子程式是ret

呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。

我說的是80c51的

5樓:匿名使用者

呼叫中斷服務子程式,就是產生中斷即執行它

呼叫子程式,在程式裡面什麼時候呼叫它就執行

微控制器裡中斷返回和子程式返回的區別是什麼? 5

6樓:可以叫我表哥

中斷服務子程式入口地址相對某一中斷是固定的,呼叫子程式的偏移地址是隨機的,基本過程差不多,返回時,中斷服務子程式用的是reti 呼叫子程式是ret。

呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。

7樓:

基本沒有區別!都會在返回時恢復壓棧的pc指標並繼續執行程式。

中斷處理程式實際上也可以看做是一個普通的子程式,只是它的呼叫是預先設定的地址入口,並且它的呼叫時由中斷觸發的;而子程式是我們人為地呼叫的。

但是中斷子程式的返回有時要考慮對中斷的處理(如開關中斷允許、初始化資料-----比如計數器或者定時器的初始值處理等等)。

8樓:蔥要吃魚

中斷是微控制器的一個重要功能,中斷子程式專為執行中斷功能,它是在發生中斷後,自動執行的,不需要主程式呼叫;子程式要主程式呼叫才能執行。

9樓:匿名使用者

中斷返回後繼續執行斷點以後的程式,子程式返回其實是在編譯時把子程式插在主調程式之中,執行完子程式後順序執行後面的程式而已。

微控制器裡中斷返回和子程式返回的區別是什麼?

10樓:敏玉英宛甲

中斷服務子程式入口地址相對某一中

斷是固定的,呼叫子程式的偏移地址是隨機的

專,基本過程差不多,返回時屬,中斷服務子程式用的是reti呼叫子程式是ret。

呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返回,並會清除內部相應的中斷狀態暫存器。

11樓:佴青芬僕念

1.子程式呼叫是預先安排好的,程式中斷是隨機發生的;

2.呼叫子程式,是為主程式服務的,而中斷程式與主程式的程式毫無關係;

3.子程式是由呼叫指令給出目標地址,中斷是通過隱指令獲得中斷服務程式的入口地址

12樓:常春禚凰

基本沒有區別!都會在返回時恢復壓棧的pc指標並繼續執行程式。

中斷處理程式實版際上也可權以看做是一個普通的子程式,只是它的呼叫是預先設定的地址入口,並且它的呼叫時由中斷觸發的;而子程式是我們人為地呼叫的。

但是中斷子程式的返回有時要考慮對中斷的處理(如開關中斷允許、初始化資料-----比如計數器或者定時器的初始值處理等等)。

在微控制器中子程式與中斷服務程式的異同點。

13樓:匿名使用者

相似點:

(1) 都是中斷當前正在執行的程式,都要通過執行返回指令,返回到原來的程式。

(2) 都是由硬體自動地把斷點地址壓入堆疊;當執行到返回指令時,自動彈出斷點地址以便返回原來的程式。

(3)都要通過軟體完成現場保護和現場恢復。

(4) 都可以實現巢狀。

14樓:焦水淼

中斷是微控制器的一個重要功能,中斷子程式專為執行中斷功能,它是在發生中斷後,自動執行的,不需要主程式呼叫;普通子函式要主程式呼叫才能執行。

彙編裡的區別:

普通子函式用ret返回;中斷子程式用reti返回,reti返回時要清除中斷標誌的;

普通子函式呼叫時直接進入函式入口地址,中斷函式在中斷髮生時先進中斷入口

03h、08h、13h、18h、23h後隨即寫一個跳轉指令,再跳轉到相應語句。

c語言區別:

普通子函式用的是c語言裡的主函式呼叫子函式的方法,子函式可以有引數,有返回值;中斷函式沒有引數,沒有返回值;

15樓:匿名使用者

差別:(1) 中斷請求訊號可以由外部裝置發出,是隨機的;子程式呼叫卻是由軟體編排好的。

(2) 中斷響應後由固定的向量地址轉入中斷服務程式,而子程式地址由軟體設定。

(3) 中斷響應是受控的,其響應時間會受一些因素影響;子程式響應時間是固定的。

微控制器問答題:比較中斷服務子程式與普通子程式的異同

16樓:匿名使用者

相同:都是子程式

不同:普通子程式 按程式執行順序一步步執行 到他了 他才執行 不到他 他老實的等著

中斷服務子程式 可以根據中斷請求快速執行,比如外部下降沿中斷,微控制器在檢測到他的管腳突然由高電平變成低電平的時候就會放棄現在正在執行的普通子程式,呼叫你的中斷服務程式。檢測和呼叫過程都是微控制器自動完成的,你只要給他初始化了然後寫好中斷後要呼叫的子程式就不用你管了。

再舉個簡單的例子。

比如你們的微控制器老師在給你們講課,講課的內容可以是第一節 第二節,這就是一個個的子程式,普通子程式。突然**了,就要執行應急程式,指揮你們撤離,你老師就得放棄現在正在執行的這些普通子程式去執行撤離這個級別比較高的中斷服務程式。

17樓:

答:中斷是微控制器的一個重要功能,中斷子程式專為執行中斷功能,它是在發生中

斷後,自動執行的,不需要主程式呼叫;普通子函式要主程式呼叫才能執行。

彙編裡的區別:

普通子函式用ret返回;中斷子程式用reti返回,reti返回時要清除中斷標誌的;

普通子函式呼叫時直接進入函式入口地址,中斷函式在中斷髮生時先進中斷入口

03h、08h、13h、18h、23h後隨即寫一個跳轉指令,再跳轉到相應語句。

c語言區別:

普通子函式用的是c語言裡的主函式呼叫子函式的方法,子函式可以有引數,有返回值;中斷函式沒有引數,沒有返回值;

中斷函式的寫法也不一樣,以80c51為例:

void int0() interrupt 0 using 1

interrupt 0不是是外部中斷0引發的中斷,必須寫; using 1

表示在中斷函式裡用第一組暫存器r0-r7.這個可以省略。

要進一步瞭解,參考:

18樓:匿名使用者

前幾位說的都很好 我也說說

普通子程式:必須在主程式中以call 的形式呼叫,才會執行到他。

中斷服務子程式:想執行一般有很多條件,但這些條件一旦具備,cpu就會義無反顧的去執行中斷服務子程式(當然,要先把正在執行的一條指令執行完畢以後才過去)

19樓:匿名使用者

中斷服務子程式是一旦檢測到有中斷請求則微控制器響應中斷,轉入中斷服務子程式,執行完後再返回主程式。

普通服務子程式是等待主程式當中的呼叫,執行完後再返回。

兩者沒什麼本質的區別

微控制器的執行子程式長呼叫lcall指令與長轉移指令的區別是什麼?

20樓:黑豹

指令結構相來

同:指令 + 直接地址。源

執行過程不同:呼叫指令要保護現場,進行堆疊操作,轉移指令不需要;

執行結果不同:呼叫指令執行後會返回執行下一條指令,程式模組沒有結束;

轉移指令不會返回,本條指令就是程式模組的結尾。

mcs-51微控制器程式中可以直接呼叫中斷服務程式嗎?為什麼?

21樓:丿丶

這樣給你說吧。當微控制器執行起來的時候是高速運轉你while(1)裡面的程式。但是這樣是不夠的,比如你想把某個訊號傳遞給微控制器讓它處理,比如說:

你按了某個鍵來控制某個燈的亮滅,這時候就需要微控制器來響應你的動作,響應的方式就是中斷。也就是說你在主程式中完成了某個中斷的觸發條件時,當達到這個條件時程式就會跳轉到中斷服務函式中去,執行完中斷服務函式中的程式後再返回主程式中繼續迴圈執行。你說的呼叫其實不太正確,中斷服務函式只能觸發,它是由微控制器內特定的某些暫存器的標誌位控制的,當這些滿足觸發條件的時候,標誌位被硬體置1,然後自動執行你編寫的中斷服務函式。

說的不是很清楚,請見諒,中斷是微控制器內最重要的功能之一,與之對應的還有定時器(這是微控制器的心臟),這些內容在51裡面都是很簡單的,但是到了32位微控制器裡面會變得特別複雜。

希望這些內容能給你一些幫助。

22樓:匿名使用者

理論上是可以的,實際上,也是可以的,但要說明的是,中斷服務程式的返回使用 reti 指令,與子程式返回的 ret 指令是有區別的。

23樓:生活如歌

可以直接呼叫,但這樣中斷服務程式和普通子程式沒什麼區別了吧。

24樓:匿名使用者

呼叫可以,但是如果有堆疊操作的話,可能會破壞程式的執行效果。

如果主程式呼叫中斷程式時,中斷在呼叫的話會怎樣??

c51中有克遞迴呼叫的函式。但**也比較大。記憶體佔用多,似乎不太合算。

微控制器中子程式和中斷服務程式有何異同?為什麼子程式返回指令R

reti是中斷返回指令 這條指令的功能和ret指令相似,2條指令的不同之處是 本指令清除了中斷響應時,被置1的mcs 51內部不可定址的 優先順序生效 觸發器清零。微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?ret是子程式返bai回指令,返 du回到呼叫該子程式處zhi的下一條指令...

8051呼叫子程式或執行中斷時,將儲存哪些暫存器?請回答的詳細一點。謝謝

ank 0 片內ram地址08h 0fh 為r0 r7 bank 1片內ram地址10h 17h 為r0 r7 bank 2片內ram地址17h 1fh 為r0 r7 bank 3任意時刻cpu只能用其中一組,其餘三組可按片內ram地址直接訪問。psw為程式狀態字,其中的各位對應了cpu內部的各種情...

微控制器中斷程式怎麼讀啊,什麼是微控制器的中斷

讀懂中斷服務程式很容易的。首先你要搞懂這是什麼中斷,從中斷服務程式第一行可以看出來。void int time void interrupt 1這是中斷名,可以隨便取 這是中斷號,從0 開始往上排,1表示定時器0中斷。分別是 0 外部中斷0 1 定時器0中斷。2 外部中斷1 3 定時器1 4 串列埠中...