單片機MCU中斷的基本過程
在單片機系統(tǒng)中,我們把產(chǎn)生中斷的請求源稱為中斷源,它是指引起中斷發(fā)生的事件、設備、部件。中斷源可以是外部設備,如打印機、鍵盤、鼠標等,它們與計算機進行輸入/輸出數(shù)據(jù)交換時需向CPU發(fā)出中斷請求。
一般計算機系統(tǒng)允許有多個中斷源,當幾個中斷源同時向CPU發(fā)出中斷請求,一般情況下CPU會優(yōu)先處理最緊急的中斷請求,計算機必須根據(jù)中斷源的輕重緩急進行排隊,這就必須給每個中斷源的中斷請求賦予一個中斷優(yōu)先級,以反映每個中斷源的中斷請求響應的優(yōu)先程度。
單片機系統(tǒng)通常有多個中斷源,經(jīng)常會出現(xiàn)多個中斷源同時申請中斷的情況。但是CPU在每一個時刻,只能執(zhí)行一個中斷,此時,CPU將會根據(jù)中斷源的重要程度執(zhí)行中斷。程序開發(fā)人員在程序設計的過程中需要根據(jù)任務的重要順序安排一個中斷響應的優(yōu)先順序,中斷源的這種優(yōu)先順序常被稱為中斷優(yōu)先級別,通常最重要的任務或者事件的級別最高,然后依次降級排列。
當多個中斷源同時申請中斷時,CPU會首先響應優(yōu)先級最高的中斷請求,在優(yōu)先級最高的中斷處理完成之后,再響應級別較低的中斷。當CPU正在處理某個中斷時,若出現(xiàn)了更高級的新的中斷請求,CPU應能停止正在進行的中斷處理,轉去處理更高優(yōu)先級的中斷。這種掛起正在處理的中斷而轉去響應更高級別的中斷稱中斷嵌套。如果新的中斷請求是相同級別的或更低級別的,則CPU不予理睬,直到正在執(zhí)行的中斷服務程序運行完畢后才去響應新的中斷請求。
中斷響應可以分為以下幾個步驟進行。
(1) 保護斷點。保存下一條將要執(zhí)行的指令的地址,就是把這個地址送入堆棧。
(2) 尋找中斷入口。中斷入口地址又稱為中斷矢量。根據(jù)8個不同的中斷源所產(chǎn)生的中斷,查找相應中斷服務程序的入口地址,這個時候計算機的程序計數(shù)器PC就指向中斷服務程序所在的地址。以上工作是由計算機自動完成的,與程序的設計無關。在這8個入口地址處存放有中斷處理程序(這是程序編寫時放在那兒的,如果沒把中斷程序放在那兒,就錯了,中斷程序就不能被執(zhí)行到)。
(3) 執(zhí)行中斷處理程序。這個時候程序計數(shù)器PC就逐條執(zhí)行中斷服務程序,直到程序執(zhí)行完成為止。
(4) 中斷返回。執(zhí)行完中斷指令后,需要把原來保存在堆棧里面的地址返回來,這個時候程序計數(shù)器PC就重新指向原來的主程序,繼續(xù)執(zhí)行原來的程序。
編輯:admin 最后修改時間:2023-04-29