pic16f87x系列單片機可以接收多達14個中斷源。中斷控制器寄存器intcon標記著各個中斷源的請求,對各個中斷設(shè)置屏蔽位,對全部中斷設(shè)置全局屏蔽位。 pic16f87x系列的中斷包含:tmr0溢出中斷(toif)、外部中斷(intf)、端口b變化中斷(rbif)、并行從動端口中斷(pspif)、a/d變換中斷、usart異步接收中斷(rcif)和異步發(fā)送中斷(txif)、同步串行端口中斷(sspif)、ccp1中斷(ccpiif)、tmr2中斷(tmr2if)、tmr1中斷、ccp1中斷(ccp2)、e2prom寫中斷(eeif)、總線碰撞中斷(bclif)?! 「鱾€中斷采用查詢方式進行,即當cpu口向應中斷時,事先要通過查詢中斷標志位去判斷是哪個中斷產(chǎn)生中斷請求,然后執(zhí)行相應的中斷服務程序。 rb0/int外中斷仍遵守pic16f87x單片機的中斷原則,當有中斷時產(chǎn)生中斷標志位,由cpu查詢識別中斷。根據(jù)這一原則,可以擴展多個外中斷源,cpu響應中斷后查詢中斷標志位識別中斷。 rb0/int引腳上的外部中斷由邊沿觸發(fā),既可以是上升沿,也可以是下降沿,這由選擇寄存器option_reg的intedg位(d6)決定。當intedg=1時,選擇上升沿觸發(fā);當intedg=0時,選擇下降沿觸發(fā)。一旦檢測到引腳上出現(xiàn)有效邊沿,就把intf位(intcon的d1)置1。這個中斷由中斷控制位inte設(shè)置允許或禁止?! 榱朔乐瑰e誤的死循環(huán)執(zhí)行同一個中斷,在重新開放這個中斷之前必須在中斷服務程序中用軟件對intf位清0。如果inte位在進入休眠狀態(tài)之前已被置1,int中斷可以喚醒在休眠狀態(tài)下的cpu。gie位的狀態(tài)決定處理器是否在被喚醒后轉(zhuǎn)至中斷矢量。 當定時器timer0的計數(shù)器tmr0計滿溢出(即由ffh變成00h)時,硬件將自動把tgif位置1。其中斷可以通過對toie位進行設(shè)置來控制該中斷是否開放?! ‘攃pu響應rb7、rb4中斷時,就有兩種情況產(chǎn)生:第一種稱為“短脈沖”,即在cpu響應中斷期間引腳電平恢復到原始狀態(tài),對這種情況cpu不會產(chǎn)生虛假中斷現(xiàn)象。第二種稱為“寬脈沖”,即在cpu響應中斷后引腳電平才恢復到原始狀態(tài),恢復到原始狀態(tài)的過程也產(chǎn)生中斷請求,這種情況就是虛假中斷現(xiàn)象?! ≡诙丝赽的d7~d4引腳上一旦有電平變化就把rbif位置1,這個中斷可以通過對rbie位進行設(shè)置來控制該中斷是否開放?! g迎轉(zhuǎn)載,信息來源維庫電子市場網(wǎng)()