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

2021-03-27 11:33:07 字數 4186 閱讀 5418

1樓:司徒清安希倩

reti是中斷返回指令

這條指令的功能和ret指令相似,2條指令的不同之處是:本指令清除了中斷響應時,被置1的mcs-51內部不可定址的

「優先順序生效」觸發器清零。

微控制器組合語言指令中中斷返回指令ret和reti有什麼不同?

2樓:章佳楊柳德人

ret是子程式返bai回指令,返

du回到呼叫該子程式處zhi的下一條指令執dao行,返回的地址是從專ret執行前的sp中最屬後兩個值。

reti是中斷服務程式返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從reti執行前的sp中最後兩個值。

3樓:師清潤棟陣

ret是普通子程式的返回指令,而不能用reti,所以,ret不是中斷返回指令,就是子程式返回指令。

而reti是用在中斷子程式的返回指令,必須用這個,這才叫中為返回指令,而不能用ret,這就是區別。

4樓:鄲睿哲化童

reti

是中斷返bai

回指令;

ret是子程式du返回指令;

reti比ret多一步清除中斷zhi優先順序狀態位,讓dao同級回別的中斷有機會得到響應。

中斷指令答「reti」做為中斷跳出指令除了將堆疊中儲存著的地址取出,送回pc;使程式從主程式的中斷處繼續往下執行的作用外,還有將「優先順序生效」觸發器清零的功能。

5樓:羅豫柳翊

ret是子程式返回指令。

reti

是中斷服務程式返回指令。

兩者,用途不同。

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

6樓:敏玉英宛甲

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

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

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

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

7樓:佴青芬僕念

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

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

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

8樓:常春禚凰

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

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

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

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

9樓:匿名使用者

相似點:

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

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

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

⑷ 都可以實現巢狀。

10樓:焦水淼

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

彙編裡的區別:

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

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

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

c語言區別:

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

11樓:匿名使用者

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

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

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

mcs51微控制器,中斷服務程式的返回指令和子程式的返回指令有什麼區別?是多少?

12樓:

中斷服務程式的返回指令 彙編助記符 reti 機器指令 32h

子程式的返回指令 彙編助記符 ret 機器指令 22h

13樓:馬洋陌越

ret用於

一般程式的返回

reti用於中斷函式的返回

以上是一般微控制器書籍簡紹的,然而在實際應用中,我發現,在程式返回中一樣可以使用reti,而在中斷返回中卻無法使用ret,究其原因是因為reti比ret多做一件事情就是將「優先順序生效」觸發器清零

原來在8051構架中--中斷系統中含有兩個不可定址的「優先順序生效」觸發器。一個用於指出cpu是否正在執行高優先順序的中斷服務程式,這個觸發器為1時,系統將遮蔽所有的中斷請求;另一個則指出cpu是否正在執行低優先順序中斷服務程式,該觸發器為1時,將阻止除高優先順序以外的一切中斷請求。由此可見,若要響應同級甚至是低階中斷請求,必須使得該「優先順序生效」觸發器清零。

但該觸發器又是不可定址的,所以無法用軟體直接清零。」

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

14樓:軒轅幻桃仰頡

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

呼叫子程式是ret

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

我說的是80c51的

微控制器程式中,中斷服務子程式與其他普通程式有什麼不同?

15樓:電量測量

這兩型別的子程式區別在於如下幾點:

中斷服務子程式有5箇中斷內

源中斷服務子程式不需要容在主程式中被呼叫,而是滿足條件自動觸發從指令上看中斷用reti,子程式用ret

在呼叫普通子程式時有可能被優先順序高的中斷子程式打斷兩者入口地址不同,中斷有固定入口地址

16樓:aizen_人間喜劇

一個自動呼叫 一個手動呼叫 你說有什麼不同

17樓:陸澤仍雅麗

兩型別程式區別於幾點:

斷服務程式5斷源

斷服務程式需要主程式呼叫滿足條件自觸發

指令看斷用reti程式用ret

呼叫普通程式能優先順序高斷程式打斷

兩者入口址同斷固定入口址

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

18樓:匿名使用者

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

19樓:水野未知

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

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

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

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

20樓:走路的蔥哥

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

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

我說的是80c51的

21樓:匿名使用者

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

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

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

中斷服務子程bai序入口地du址相對某一中斷是固zhi定的,呼叫子程式的偏dao移專地址是隨機的,基本過程差不屬多,返回時,中斷服務子程式用的是reti 呼叫子程式是ret 呼叫中斷服務子程式和呼叫子程式都會把當前偏移地址的下一地址壓棧,但呼叫子程式的返回指令ret不影響標誌位,reti從中斷程式返...

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

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

微控制器 按鍵產生中斷 控制顯示 程式

中斷保護現場,是為了你中斷子程式執行完以後能夠返回到你程式中中斷點,即產生中斷的地方,使程式能夠繼續向下執行!如過你說的不用保護現場的話,那麼程式執行完以後就不能夠回到現場,那麼你的程式將不知道要跳轉到那裡去了,也就是飛鳥,呵呵 你說的中斷巢狀,也是一樣的,兩者都要保護現場,不然你也不能夠回到現場,...