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