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