8 中斷 PIC單片機16F84具有實時處理功能,能對外界異常發生的事件由中斷技術作及時處理。 當單片機的CPU正在處理某事件時,若外部發生了某一事件(如定時器溢出、引腳上電平變化),請求CPU迅速去處理,于是CPU就暫時中止當前的工作,轉去處理所發生的事件。中斷處理完該事件后,再回到原來被中止的地方,繼續執行原來的工作,如圖1所示。實現這種功能的部件稱為中斷系統。產生中斷的請求源稱為中斷源。中斷源向CPU提出的處理請求,稱為中斷請求或中斷申請。CPU暫時中斷自身的事務,轉去處理事件的過程,稱為CPU的中斷響應過程。對事件的整個處理過程,稱為中斷服務(或中斷處理)。處理完畢,再回到原來被中止的地方,稱為中斷返回。 PIC16F84芯片有4種中斷源,其邏輯電路如圖2所示。
9中斷控制 中斷主要由中斷控制寄存器INTCON(圖3)來控制。INTCON是一個可讀/寫寄存器,含有定時器TMRO溢出、RB口的變化和外部INT引腳中斷等各種允許控制和標志位。 全局中斷允許位GIE(D7)置1,將開放所有未被屏蔽的中斷,如將該位清零,將禁止所有的中斷。在響應中斷時,GIE位將被清零,以禁止其它中斷,返回的斷點地址被壓棧保護,接著把中斷入口地址0004h裝入程序計數器PC。在中斷服務程序中,通過對中斷標志位進行查詢,確定中斷標志位必須在重新開放中斷之前用軟件清零,以避免不斷地中斷申請而反復進入中斷。 (1)INT中斷。RBO/INT引腳上的外部中斷由邊沿觸發,當INTEDG位(OPTION寄存器第6位)被置1時,選用上升沿觸發,如該位被清零,則由下降沿觸發。當檢測到引腳上有規定的有效邊沿時,便把INTE位(INTCON的D4位)置1。在重新開放這個中斷之前,必須在中斷服務程序中對INTE位清零。 (2)TMRO中斷。當定時器TMRO的計數器計滿溢出(即由FFH變成00H)時,硬件自動把TOIF(INTCON的D2位)置1。其中斷可以通過對TOIE(INTCOND的D5位)置1或清零來控制該中斷是否開放。 (3)PORTB口引腳電平變化中斷。在PORTB口的D7~D0引腳上一旦有電平變化,就會把RBIF(INTCON的D0位)置1。這個中斷可以通過對RBIE(INTCON的D3位)置1或清零來控制該中斷是否開放。 (4)中斷的現場保護。在發生中斷時,只有返回斷點的地址被壓棧保護。若用戶還希望保護關鍵的寄存器(如W寄存器和STATUS寄存器)。這需要由軟件來實現。有關中斷的現場保護,請參看本報第15期有關PIC單片機指令識讀中的實例。 成都 衛東 知識競賽試題: 23用簡單的實例說明中斷在PIC單片機中的用途。
|