單片機匯編指令中RETI和RET的區(qū)別
通常情況下,在普通的匯編子程序中用RET做返回,在中斷服務子程序中用RETI起中斷返回作用。兩條指令都能從堆棧中彈出斷點地址并裝入PC中,使CPU回到原來主程序的斷點處繼續(xù)運行。
然而,RET和RETI有本質的區(qū)別:當某一中斷源響應后,單片機中的標志寄存器flag H和flag L其中的一個將會自動置位,用于阻止比它低級或同級的中斷觸發(fā)。RETI可以清除“優(yōu)先級激活觸發(fā)器”(即flag寄存器),以保證后續(xù)中斷源的及時響應。
所以,當把RETI替換為RET后,該程序在第一次運行時可能不會出錯,但在第二次運行時就會出錯了!
編輯:admin 最后修改時間:2018-05-18