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