A. 單片機匯編指令中RETI和RET的區別
1、方式不同
當某一中斷源響應後,單片機中的RETI將會自動置位,用於阻止比它低級或同級的中斷觸發。RETI可以清除「優先順序激活觸發器」(即flag寄存器),以保證後續中斷源的及時響應。
所以,當把RETI替換為RET後,該程序在第一次運行時可能不會飢搜晌出錯,但在第二次運行時就會出錯了。
2、過程不同
RET是從子程序返回,返回到LCALL或ACALL指令下一條指令處繼續執行程序。RETI是從中斷服務子程序返回,返回到中斷時的斷點處繼續執行程序,斷漏悶點未知。
(1)單片機RETRETI擴展閱讀:
直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫爛鋒來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。
C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。
B. 子程序的末尾有什麼指令
子程序的末尾一定要有RETI指令,子程序的調用是LCALL和ACALL。
RETI是中斷返回指令,這條指令的功能和RET指令相似,2條指令的不同之處是:本指令清除了中斷響應時,被置1的MCS-51內部不可定址的 「優先順序生效」觸發器清零。
執行這條指令後,CPU將會把堆棧中保存著的地址取出,送回PC,那麼程序就會從主程序的中斷處繼續往下執行了。中斷指令「RETI」作為中斷跳出指令,除了將堆棧中保存著的地址取出,送回PC,使程序從主程序的中斷處繼續往下執行的作用外,還有將「優先順序生效」觸發器清零的功能。
(2)單片機RETRETI擴展閱讀
單片機匯編指令中RETI和RET的區別
通常情況下,在普通的匯編子程序中用RET做返回,在中斷服務子程序中用RETI起中斷返回作用。兩條指令都能從堆棧中彈出斷點地址並裝入PC中,使CPU回到原來主程序的斷點處繼續運行。
然而,RET和RETI有橡搏本質的區別:當某一中斷源響應後,單片機中的標志寄存器flag H和flag L其中的一個將會自動置位,用於阻止比它低級或同級的中斷觸發。RETI可以清除「優先順序激活觸發器」(即flag寄存器),以保證後續梁粗祥中斷源的及時響應。
所以,當把RETI替換為RET後,該程序在第一次運行時可能不會出凳培錯,但在第二次運行時就會出錯了。
C. 單片機匯編語言指令中中斷返回指令RET和RETI有什麼不同
RET是子程序返回指令,返回到調用該子程序處的下一條指令執行,返回的地址是從RET執行前的SP中最後兩個值。
RETI是中斷服務程序返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從RETI執行前的SP中最後兩個值。
D. 單片機匯編語言指令中中斷返回指令RET和RETI有什麼不同
RETI是中斷返回指令;x0dx0aRET是子轎攔遲程序返回指令;x0dx0aRETI比RET多一步清除中斷優先順序狀態位,讓同級別的中斷有機會得到響應。x0dx0a中斷指令「RETI」做為中斷跳出指令除了將堆棧中保存著的地址取出,送回PC;使程序從主程序的中斷處繼續往下閉李執行的作用外,還有將衡搜「優先順序生效」觸發器清零的功能。
E. 在單片機中,RET和RETI分別是什麼返回指令
在單片機中返回指令有RET、RETI或者跳轉指令SJMP或LJMP。
RET是一般子程序返回指令,執行該指令,會自動彈出被保護的地址給PC指針。
RETI是中斷服務程序返回指令,執行該指令,除了彈出被保護的地址指針給PC外,還會恢復影響中斷的一些標志位,比如定時器中斷的TFn標志。
F. 單片機匯編語言指令中中斷返回指令RET和RETI有什麼不同
RET是普通子程序的返回指令,RET是普通子程序的最後1條指培含令,它使程序從子程序轉到調用該子程序指令LCALL/ACALL的下1條指令執行。
RETI是中斷服務子程序的返回指令,RETI是中斷服務子程序的最後1條指令,它使程序從中斷服務子御消程序轉到中斷點繼續運行。
RETI指令除了執行返回功鎮中知能外,還清除內部相應的中斷狀態寄存器(該狀態寄存器由CPU響應中斷時置位,宣告CPU當前正在執行中斷服務程序),因此中斷服務子程序必須用RETI結束,
CPU執行RETI指令後,必須至少再執行一條其它指令才能響應新的中斷。