PIC單片機(jī)之16C84單片機(jī)介紹(二)
有關(guān)振蕩器的配置,振蕩器的選擇與連接電路與PIC16C6X系列相同。
8-2中斷
PIC16C84具有4個中斷源。即外部中斷RBO/INT引腳上的中斷,TMR0溢出中斷;PORTB改變中斷(RB7:RB4);EEPRDM寫完成中斷。
中斷控制寄存器(INTCON在其標(biāo)志位,記錄了每一個中斷請求。它也包括了每個中斷的允許/禁止位。所有中斷的允許/禁止位(IN TCON7>),它就開放所有中斷或禁止所有中斷。從中斷返回指令RETFLE返回時,退出中斷,并置GIE=1,重新開放所有中斷。 RBO/INT引腳中斷,RB端口改變中斷和TMRO溢出中斷,這些中斷的中斷標(biāo)志在INTCON寄存器中。
當(dāng)中斷的響應(yīng)時,GIE位被清0,關(guān)閉任何新的中斷,返回地址被壓入堆棧,用0004H裝入PC。對于外部中斷文件,如RBO/INT引腳或PORTB改變中斷,這類中斷需3到4個指令周期。嚴(yán)格的時間,取決于中 斷事件的發(fā)生。一旦在中斷的中斷服務(wù)程序中可以通過查詢中斷標(biāo)志 位來確定中斷源。中斷的標(biāo)志位應(yīng)在重新開發(fā)這個中斷之前,經(jīng)軟件 將其清0。
注意:
?、倜恳粋€中斷的標(biāo)志位被置位,而與它相應(yīng)的屏蔽位或GIE無關(guān)。
?、谌绻袛喟l(fā)生,而全部中的允許位GIE假設(shè)本是清0的,GIE可能被用戶中斷服務(wù)程序的RETFIE指令無意之間連成1。這種事情可能發(fā)生在
a、在中斷被響應(yīng)時,指令清0GIE位。
b、程序分支到中斷向量并執(zhí)行中斷服務(wù)程序。
c、中斷服務(wù)程序執(zhí)行RETFIE指令而完成。這會引起GIE位被置1(允許中斷)。同時程序返回中斷關(guān)閉后的指令(實 際上由于上述原因引起中斷未能關(guān)閉)。為確保GIE清0,應(yīng)有如下一段程序。
l00p BGF INT CON,GIE:關(guān)閉全部中斷
BTFSC INTCON,GIE;全部中斷允許位被關(guān)閉了嗎?
GOTO l00P;沒有返回到l00p,再清0GIE,否則程序繼續(xù)。
1.INT中斷
在RBO/INT上的外部中斷是邊沿觸發(fā)。如果INT?EDG位(OPTION 6>)是置1,則上升沿有效,如果INTEDG位被清0,則下降沿有效。當(dāng)有效跳變出現(xiàn)在RBO/INT引腳上時,INTF位(INTCON1>)被置1。清0INTE控制位(INTCON4>),關(guān)閉這個中斷。INTF在重新允許這個中斷之前應(yīng)由中斷服務(wù)程序中的軟件來清0這一位。在芯片進(jìn)入SLEEP之前,如果INTE位被置1,則INT中斷發(fā)生后可喚醒芯片。GIE位的狀態(tài)決定了處理器被喚醒后是否分支到中斷向量。
2.TMRO中斷
TMRO溢出(由FFH~00H)將置1 TOIF位(INTCON2>)。這一位 的中斷可以
評論