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

2021-03-27 11:33:07 字數 3401 閱讀 2062

1樓:做而論道

程式結構錯誤。

……mov th0,#(65536-50000)/256 ;定時50毫秒

mov tl0,#(65536-50000)/256mov ie,#82h

setb tr0--主程式,到這,就沒有了,這那行?

??????

timer: ;--下面就是:定時器中斷服務程式mov th0,#(65536-50000)/256 ;初脈衝50ms

mov tl0,#(65536-50000)/256inc r6 ;脈衝加1

mov a,r6

……主程式中,還缺少:呼叫顯示、鍵盤、迴圈,等等部分。

2樓:匿名使用者

我感覺你的程式編譯都不能過,ljmp min,你min這個標號是沒有的,何況這還是一個變數。

3樓:不認識天老師

exit:reti 改為 reti 試試

不過不建議用中斷法做 用查詢方便 你開了中斷沒有關吧?

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

4樓:匿名使用者

reti 是中斷返回指令;

ret 是子程式返回指令;

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

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

5樓:做而論道

ret 是子程式返回指令。

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

兩者,用途不同。

6樓:匿名使用者

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

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

7樓:匿名使用者

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

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

8樓:匿名使用者

ret是子程式返回指令,將堆疊中的地址彈出,而reti是中斷返回指令,除了將地址彈出,還將標誌彈出

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

9樓:

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

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

10樓:馬洋陌越

ret用於

一般程式的返回

reti用於中斷函式的返回

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

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

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

微控制器中中斷reti執行完後是返回哪一條語句繼續執行

11樓:匿名使用者

你這個程式最後只有定時器中斷在有效執行,主迴圈始終在loop這行語句處原地踏步,所以中斷執行後reti返回的也是loop這個地址。

12樓:

執行 loop: ajmp loop語句,此語句的含義是系統在等待中斷指令,當沒有中斷觸發時,一直迴圈執行此語句;當發生中斷時跳到中斷語句處執行中斷功能函式,執行完畢後再跳回來!

13樓:匿名使用者

初始化中斷後程式一直在loop中死迴圈,除了中斷外不會執行到其他的**。

所以中斷返回後無論如何都會在loop處

14樓:匿名使用者

返回loop標記執行

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

15樓:可以叫我表哥

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

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

16樓:

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

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

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

17樓:蔥要吃魚

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

18樓:匿名使用者

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

在微控制器中,ret和reti分別是什麼返回指令

19樓:匿名使用者

在微控制器中返回指令有ret、reti或者跳轉指令sjmp或ljmp。

ret是一般子程式返回指令,執行該指令,會自動彈出被保護的地址給pc指標。

reti是中斷服務程式返回指令,執行該指令,除了彈出被保護的地址指標給pc外,還會恢復影響中斷的一些標誌位,比如定時器中斷的tfn標誌。

20樓:東穎崇

ret是子程式返回

reti是中斷返回,並且清中斷標誌,以保證能繼續中斷.

21樓:匿名使用者

在微控制器中分別是什麼?返回指令?聽聽專業的人士了給你答覆吧,我也不會的。

22樓:匿名使用者

ret 是子程式的返回指令

reti 不清楚

微控制器指令問題

mcs 51系列微控制器指令以a開頭的指令有18條,分別為 篇幅不夠,只是一半!1 acall addr11 指令名稱 絕對呼叫指令 指令 a 7 0 指令功能 構造目的地址,進行子程式呼叫。其方法是以指令提供的11位地址 al0 a0 取代pc的低11位,pc的高5位不變。操作內容 pc pc 2...

微控制器組合語言裡 db,微控制器組合語言裡 DB

微控制器匯bai 編語言中的db是以位元組du為單位定zhi義一個資料段,一dao般用於查表程式中,舉例回 說明 display mov dptr,tab mov a,r2 movc a,a dptr mov p0,a rettab 共陰極答數碼管顯示 表db 3fh,06h,5bh,4fh,66h...

51微控制器中斷問題

cpu響應中斷後,由硬體自動清零 但是但是但是但是但是但是但是但是 你的程式沒使用中斷 你只是使用了定時器 tf0和tf1可以不清0,硬體會自動清0 但是在一些增強型的51系統裡 如at89s52 tf2則必需由軟體清0 那是中斷請求 中斷沒開清什麼零 要是清了還怎麼查詢啊.這位仁兄 微控制器有兩種...