中斷嵌套和子程序嵌套的區(qū)別 什么是中斷嵌套?
什么是中斷嵌套?這意味著當(dāng)中斷系統(tǒng)正在執(zhí)行中斷服務(wù)時,另一個優(yōu)先級較高的中斷將提出中斷請求。此時,它將暫時終止當(dāng)前正在執(zhí)行的低級中斷源的服務(wù)程序,并處理高級中斷源。處理完畢后,返回中斷服務(wù)程序繼續(xù)執(zhí)行
什么是中斷嵌套?
這意味著當(dāng)中斷系統(tǒng)正在執(zhí)行中斷服務(wù)時,另一個優(yōu)先級較高的中斷將提出中斷請求。此時,它將暫時終止當(dāng)前正在執(zhí)行的低級中斷源的服務(wù)程序,并處理高級中斷源。處理完畢后,返回中斷服務(wù)程序繼續(xù)執(zhí)行。這個過程稱為中斷嵌套。事實上,它是更高層次中斷的“插拔”。處理器正在執(zhí)行中斷并接受另一個更緊急的“緊急件”來處理更高級別的中斷
單片機(jī),外部中斷程序,為什么不用寫在主程序中?為什么中斷函數(shù)不在主函數(shù)也可以運(yùn)行?
以51單片機(jī)為例說明亞帆的觀點(diǎn):
中斷是指中斷正在進(jìn)行的任務(wù)以執(zhí)行更緊急的任務(wù)。顯然,至少需要兩套程序,一套主程序和一套中斷程序。
寫在主程序中只能一步一步地執(zhí)行,不能達(dá)到高優(yōu)先級的目的。所以這是行不通的。
0x0000地址是硬件重置后執(zhí)行程序的條目。0x0003是外部中斷項,以此類推。
復(fù)位后,將從0x0000自動執(zhí)行,當(dāng)外部中斷到來時,將從0x0003自動執(zhí)行。當(dāng)函數(shù)寫入中斷0時,該函數(shù)將根據(jù)中斷號自動放置在相應(yīng)的條目上。中斷編號0是將此函數(shù)放入0x0003(實際上是一條跳轉(zhuǎn)指令)。
如果主程序中未打開中斷和啟用中斷,則0x0003是正常的程序存儲空間。
詳見下圖:
如圖所示,中斷僅表示兩組程序(藍(lán)色和紅色)。
單片機(jī)中同級中斷不能嵌套?
不能嵌套。它可以通過設(shè)置不同的優(yōu)先級來嵌套。
中斷的執(zhí)行優(yōu)先級是IP寄存器的設(shè)置。在兩個優(yōu)先級的情況下,如果位為1,則相應(yīng)的中斷源具有高優(yōu)先級;如果位為0,則相應(yīng)的中斷源具有低優(yōu)先級。
中斷優(yōu)先級有三個原則:
1。當(dāng)CPU同時接收到多個中斷時,它首先以最高優(yōu)先級響應(yīng)中斷請求;
2。正在進(jìn)行的中斷過程不能被相同級別的新中斷請求或低行優(yōu)先級中斷;
3。正在進(jìn)行的低線優(yōu)先級中斷服務(wù)可以被高線優(yōu)先級中斷請求中斷;
在IP中預(yù)設(shè)當(dāng)設(shè)置外部中斷0的優(yōu)先級時,cup將停止定時器0的中斷服務(wù),進(jìn)入外部中斷0服務(wù)程序,執(zhí)行后返回定時器0中斷服務(wù)程序。否則就不行了。
單片機(jī)全局中斷為什么可以避免中斷嵌套?
中斷具有優(yōu)先級。中斷嵌套實現(xiàn)的意義在于,最新中斷的優(yōu)先級高于執(zhí)行中斷的優(yōu)先級。全局中斷具有最高優(yōu)先級,沒有其他中斷可以中斷其執(zhí)行,因此實現(xiàn)中斷嵌套沒有任何意義