PIC16F87X單片機中斷系統應用須關(guān)注的問(wèn)題
三、 中斷相關(guān)的寄存器
與中斷功能有關(guān)的特殊功能寄存器共有5個(gè):中斷控制寄存器INTCON、第1外圍設備中斷標志寄存器PIR1、第1 外圍設備中斷屏蔽寄存器(又稱(chēng)中斷使能寄存器)PIE1、第2外圍設備中斷標志寄存器PIR2和第2外圍設備中斷屏蔽寄存器PIE2。如表2所列,5個(gè)寄存器中共有40位,其中使用了30位。分別與圖1中的中斷邏輯電路的輸入邏輯信號成嚴格對應關(guān)系,也與邏輯表達式成嚴格對應關(guān)系。這5個(gè)寄存器都具有在 RAM數據存儲器中統一編碼的地址。也就是說(shuō),PIC單片機可以把這5個(gè)特殊寄存器當作普通寄存器單元來(lái)訪(fǎng)問(wèn)(即讀出或寫(xiě)入操作)。這樣有利于減少指令集的指令類(lèi)型和指令數量,也便于學(xué)習、記憶和編程。
四、 中斷的處理
單片機復位后,由硬件自動(dòng)對全局中斷屏蔽位進(jìn)行設置GIE=0,將屏蔽所有的中斷源。中斷返回指令“RETFIE” 執行后,也由硬件自動(dòng)對總屏蔽位進(jìn)行設置GIE=1,重新開(kāi)放所有的中斷源。不論各種中斷屏蔽位和全局中斷屏蔽位GIE處于何種狀態(tài)(是開(kāi)放還是禁止),當某一中斷源的中斷條件滿(mǎn)足時(shí),都會(huì )發(fā)出中斷請求,相應的中斷標志位都會(huì )被置位(=1)。但是,是否能夠得到CPU的響應,則要根據該中斷源所涉及到的中斷屏蔽位的狀態(tài)而定。CPU響應中斷后,由硬件自動(dòng)對全局中斷屏蔽位進(jìn)行清零(GIE=0),屏蔽所有的中斷源,以免發(fā)生重復中斷響應,然后,由硬件自動(dòng)把當前的程序計數器PC值(即程序斷點(diǎn)地址)壓入堆棧(實(shí)際為硬件堆棧),并且把PC寄存器置以中斷向量地址(0004H),從而轉向并開(kāi)始執行中斷服務(wù)程序。進(jìn)入中斷服務(wù)程序后,程序中必須安排指令,檢查發(fā)出請求的中斷源(如果同時(shí)開(kāi)放多個(gè)中斷源的話(huà))。這可以通過(guò)檢查各個(gè)中斷源的標志位來(lái)實(shí)現。一旦確定出發(fā)出申請的中斷源,就用軟件把該中斷源的標志位人為地清零,否則,執行中斷返回指令“RETFIE”。重開(kāi)中斷后,由于中斷標志位仍為“1”而引起 CPU重復響應同一個(gè)中斷請求。中斷服務(wù)程序的末尾必須放置1條中斷返回指令“RETFIE”。執行該條指令后,不僅可以重開(kāi)中斷,而且還可以由硬件自動(dòng)將保留在堆棧頂部的斷點(diǎn)地址彈出,并放回到程序計數器PC中,使CPU返回和繼續執行被中斷的主程序。
1 中斷的延時(shí)響應和延時(shí)處理
1次中斷過(guò)程,從中斷源發(fā)出請求到得到CPU的響應必然存在一定的延遲時(shí)間。各個(gè)相關(guān)信號的時(shí)序圖如圖2所示。
評論