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