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