新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F87X單片機(jī)中斷系統(tǒng)應(yīng)用須關(guān)注的問題

PIC16F87X單片機(jī)中斷系統(tǒng)應(yīng)用須關(guān)注的問題

作者: 時(shí)間:2012-04-10 來源:網(wǎng)絡(luò) 收藏

三、 相關(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可以把這5個(gè)特殊寄存器當(dāng)作普通寄存器單元來訪問(即讀出或?qū)懭氩僮鳎_@樣有利于減少指令集的指令類型和指令數(shù)量,也便于學(xué)習(xí)、記憶和編程。

33.jpg

四、 中斷的處理

復(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所示。

34.jpg



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉