《單片機原理及接口技術(shù)》課件第5章_第1頁
《單片機原理及接口技術(shù)》課件第5章_第2頁
《單片機原理及接口技術(shù)》課件第5章_第3頁
《單片機原理及接口技術(shù)》課件第5章_第4頁
《單片機原理及接口技術(shù)》課件第5章_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第5章單片機的中斷與定時系統(tǒng)5.1MCS-51單片機的中斷系統(tǒng)

5.2MCS-51單片機的定時器/計數(shù)器

5.3MCS-51單片機外部中斷源的擴展

5.4

其他類型單片機的對照描述

本章小結(jié)

練習(xí)與思考題

5.1MCS-51單片機的中斷系統(tǒng)

5.1.1計算機中斷技術(shù)的概念

1.中斷

中斷是一項重要的計算機技術(shù)?,F(xiàn)代的計算機之所以具有實時處理功能,即能對外界發(fā)生的事件做出及時處理的功能,就是依靠它們的中斷系統(tǒng)。

所謂中斷就是指計算機在執(zhí)行某一程序的過程中(A程序),由于計算機系統(tǒng)內(nèi)、外的某種原因,而必須中止原程序的執(zhí)行,轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序(B程序),待處理結(jié)束之后,再回來繼續(xù)執(zhí)行被中止的原程序的過程(A程序)。

其中,A程序我們稱為主程序,B程序稱為中斷服務(wù)程序,某種原因稱為中斷請求,執(zhí)行B程序的過程稱為中斷響應(yīng)。如圖5-1所示。圖5-1中斷響應(yīng)示意圖采用了中斷技術(shù)后的計算機,可以解決CPU與外設(shè)之間速度匹配的問題,使計算機可以及時處理系統(tǒng)中許多隨機的參數(shù)和信息,同時,它也提高了計算機處理故障與應(yīng)變的能力。而且還具有以下優(yōu)點:

(1)使用中斷方式,可允許多個外圍設(shè)備與CPU同時工作,實現(xiàn)分時操作,大大提高計算機的利用率。

(2)利用中斷技術(shù),CPU能夠及時處理測試、控制系統(tǒng)中許多隨機的參數(shù)和信息,實現(xiàn)實時處理,大大提高計算機處理問題的實時性和靈活性。

(3)中斷技術(shù)是CPU具有處理設(shè)備故障、掉電等突發(fā)事件的能力,提高計算機系統(tǒng)本身的可靠性。

2.中斷的響應(yīng)過程

中斷響應(yīng)過程如圖5-1所示。

(1)中斷查詢。在每條指令結(jié)束后,系統(tǒng)都自動檢測中斷請求信號,如果有中斷請求,且CPU處于開中斷狀態(tài)下,則響應(yīng)中斷。

(2)保護現(xiàn)場。在保護現(xiàn)場前,一般要關(guān)中斷,以防止現(xiàn)場被破壞。保護現(xiàn)場一般是用堆棧指令將原程序中用到的寄存器壓入堆棧。

(3)中斷服務(wù)。即為相應(yīng)的中斷源服務(wù)。

(4)恢復(fù)現(xiàn)場。用堆棧指令將保護在堆棧中的數(shù)據(jù)彈出來,在恢復(fù)現(xiàn)場前要關(guān)中斷,以防止現(xiàn)場被破壞。在恢復(fù)現(xiàn)場后應(yīng)及時開中斷。

(5)返回。此時CPU將壓入到堆棧的斷點地址彈回到程序計數(shù)器,從而使CPU繼續(xù)執(zhí)行剛才被中斷的程序。

3.MCS-51中斷系統(tǒng)的結(jié)構(gòu)

MCS-51單片機具有功能較強的中斷系統(tǒng)。其中,共有5個中斷源,可實現(xiàn)二級中斷服務(wù)嵌套,由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請求;中斷優(yōu)先級寄存器IP安排5個中斷源的優(yōu)先級。同一優(yōu)先級內(nèi)各中斷同時提出中斷請求時,由內(nèi)部的查詢邏輯確定其響應(yīng)次序。MCS-51單片機的中斷系統(tǒng)的結(jié)構(gòu)如圖5-2所示,它由中斷請求標志位、中斷允許寄存器IE、中斷優(yōu)先級寄存器IP硬件查詢電路組成。圖5-2MCS-51單片機的中斷系統(tǒng)5.1.2中斷源及中斷的控制

1.MCS-51的中斷源

中斷源是指在計算機系統(tǒng)中向CPU發(fā)出中斷請求的來源。中斷源可以人為設(shè)定,也可以將突發(fā)性隨機事件設(shè)置為中斷源。

MCS-51單片機共有5個中斷源:外部中斷源2(

和);2個片內(nèi)定時器/計數(shù)器T0和T1的溢出中斷TF0和TF1;1個片內(nèi)串行口的發(fā)送中斷TI和接收中斷RI。

這5個中斷源的優(yōu)先級分為兩級:高級中斷和低級中斷。其中任何一個中斷源的優(yōu)先級均可由軟件設(shè)定為高級或低級,能實現(xiàn)兩級中斷服務(wù)程序嵌套。這5個中斷源的優(yōu)先級分為兩級:高級中斷和低級中斷。其中任何一個中斷源的優(yōu)先級均可由軟件設(shè)定為高級或低級,能實現(xiàn)兩級中斷服務(wù)程序嵌套。

(1)?:外部中斷0請求,由P3.2引腳輸入。它有兩種觸發(fā)方式,通過IT0(TCON.0)來決定是電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸入信號有效,則將中斷標志IE0置1,并且向CPU發(fā)出中斷請求。

(2)?:外部中斷1請求,由P3.3引腳輸入。通過IT1(TCON.2)來決定是電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸入信號有效,則將中斷標志IE1置1,并且向CPU發(fā)出中斷請求。

(3)?TF0:片內(nèi)定時器/計數(shù)器T0溢出中斷請求。當(dāng)定時器/計數(shù)器T0產(chǎn)生溢出時,TF0置1,并向CPU發(fā)出中斷請求。

(4)?TF1:片內(nèi)定時器/計數(shù)器T1溢出中斷請求。當(dāng)定時器T1產(chǎn)生溢出時,TF1置l,并向CPU發(fā)出中斷請求。

(5)?RI/TI:片內(nèi)串行口發(fā)送/接收中斷請求。當(dāng)通過串行口發(fā)送或接收完一幀串行數(shù)據(jù)時,串行口中斷請求標志TI或RI置1,并向CPU發(fā)出中斷請求。

2.中斷源請求標志

MCS-51單片機的中斷系統(tǒng)中,使用何種中斷,采用何種觸發(fā)方式,可通過定時器/計數(shù)器控制寄存器TCON和串行控制寄存器SCON的有關(guān)位來規(guī)定。只要根據(jù)這些位的狀態(tài)就能確定有無中斷請求及中斷的來源。

1)定時器/計數(shù)器控制寄存器(TCON)

TCON是定時器/計數(shù)器控制寄存器,字節(jié)地址為88H,位地址88H~8FH。它用于保存外部中斷請求以及定時器的計數(shù)溢出,寄存器的內(nèi)容及位地址表示如下(與中斷有關(guān)的位有6位):

(1)?IE0和IE1——外部中斷請求標志。

當(dāng)CPU采樣到(或)端出現(xiàn)中斷請求時,IE0(或IE1)位由硬件置“1”。在中斷響應(yīng)完成后轉(zhuǎn)向中斷服務(wù)時,再由硬件自動清0。

(2)?IT0和IT1——選擇外部中斷源觸發(fā)方式控制位。

當(dāng)IT0=0時,為電平觸發(fā)方式。在這種方式下,CPU在每個機器周期的S5P2期間采樣(P3.2)引腳輸入電平。若采樣為低電平,認為有中斷申請,則置IE0標志為1;若采樣為高電平,認為無中斷申請或中斷申請已撤除,則將IE0標志清0。注意,在電平觸發(fā)方式下,CPU響應(yīng)中斷后不會自動清除IE0標志,也不能由軟件清除IE0標志,所以在中斷返回前,一定要撤消引腳上的低電平,使IE0置0,否則將再次引起中斷。

當(dāng)IT0=1時,為邊沿觸發(fā)方式。CPU在每個機器周期的S5P2期間采樣引腳輸入電平。如果連續(xù)兩次采樣,一個機器周期中采樣為高電平,接著下個機器周期中采樣為低電平,則置IE0標志為1,表示外部中斷0正在向CPU申請中斷。當(dāng)CPU響應(yīng)該中斷時,IE0由硬件自動清0。由于每個機器周期采樣一次外部中斷輸入電平,在邊沿觸發(fā)方式中,為保證CPU在兩個機器周期內(nèi)檢測到由高到低的負跳變,必須保證外部中斷源輸入的高電平和低電平的持續(xù)時間在12個時鐘周期以上。

IT1是選擇外部中斷1(

)觸發(fā)方式的控制位。其操作功能與IT0類同。

(3)TF0和TF1——片內(nèi)定時器/計數(shù)器計數(shù)溢出標志。

定時器/計數(shù)器被啟動后,從初始值開始進行加1計數(shù),當(dāng)最高位產(chǎn)生溢出時置該標志位為1(TF0/TF1),向CPU申請中斷,直到CPU響應(yīng)該中斷時,才由硬件自動將該標志位清0。

定時器/計數(shù)器的計數(shù)溢出標志位的使用有兩種情況:采用中斷方式時,作中斷請求標志位來使用;采用查詢方式時,作查詢狀態(tài)位來使用。

2)串行口控制寄存器(SCON)

SCON是串行口控制寄存器,寄存器地址98H,位地址98H~9FH。寄存器的內(nèi)容及位地址(與中斷有關(guān)的只有它的低兩位TI和RI)如下:

(1)?TI(SCON.1)——串行口發(fā)送中斷請求標志位。

當(dāng)CPU將一個要發(fā)送的數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動發(fā)送。每發(fā)送完一個串行幀,由硬件置位TI。

注意:當(dāng)CPU響應(yīng)中斷時,TI不能由硬件清0,必須由軟件清0。

(2)?RI(SCON.0)——串行口接收中斷請求標志位。

當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。同樣,RI必須由軟件清0。

串行中斷請求由TI和RI的邏輯或得到,即無論是發(fā)送標志TI還是接收標志RI,都會產(chǎn)生串行中斷請求。

注意:CPU復(fù)位后,TCON和SCON各位清0。5.1.3中斷響應(yīng)的控制

在MCS-51單片機的中斷系統(tǒng)中,由中斷源向CPU發(fā)出中斷請求,但CPU是否響應(yīng),怎樣響應(yīng),就得由中斷允許控制寄存器以及中斷優(yōu)先級控制寄存器來決定。

1.中斷允許控制寄存器(IE)

中斷允許控制寄存器IE的字節(jié)地址為A8H,位地址為0A8H~0AFH。通過對IE的編程寫入,控制CPU對中斷源的開放或禁止,以及對每一中斷源是否允許中斷。寄存器的內(nèi)容及地址表示(與中斷有關(guān)的控制位共有6位)如下:

(1)?EA——CPU中斷允許總控制位。

EA=1,CPU開放中斷,這時每個中斷源的中斷請求被允許或禁止,取決于各自中斷允許位的置1或清0。

EA=0,CPU屏蔽所有的中斷請求,即關(guān)中斷。

(2)?ES——串行口中斷允許控制位。

ES=1,允許串行口中斷。

ES=0,禁止串行口中斷。

(3)?ET1和ET0——定時器/計數(shù)器中斷允許控制位。

ETl(ET0)=1,允許T1(T0)中斷。

ET1(ET0)=0,禁止T1(T0)中斷。

(4)?EX1和EX0——外部中斷允許控制位。

EX1(EX0)=1,允許外部中斷1(0)中斷。

EX1(EX0)=0,禁止外部中斷1(0)中斷。

在MCS-51單片機系統(tǒng)復(fù)位后,IE中各位均被清0,即處于禁止所有中斷源的狀態(tài),可在系統(tǒng)初始化程序中對IE寄存器編程。

注意:以上所說“禁止”并不能禁止中斷源的中斷請求,它只是禁止CPU去響應(yīng)中斷請求。例如:要以中斷方式使用T0,可以用下面的字節(jié)操作指令:

MOVIE,#82H ;10000010B

也可以用下面的位操作指令實現(xiàn):

SETBEA

SETBET0

2.中斷優(yōu)先級控制寄存器(IP)

MCS-51單片機中斷系統(tǒng)具有兩級中斷優(yōu)先級管理。每一個中斷源均可通過對中斷優(yōu)先級寄存器IP的設(shè)置,選擇高優(yōu)先級中斷或低優(yōu)先級中斷,并可實現(xiàn)二級中斷嵌套。

中斷優(yōu)先級寄存器IP的字節(jié)地址為0B8H,位地址為0B8H~0BFH。通過對IP的編程,可實現(xiàn)將l個中斷源分別設(shè)置為高優(yōu)先級中斷或低優(yōu)先級中斷。其格式如下:(1)?PS——串行口中斷優(yōu)先級設(shè)定位。

PS=1,高優(yōu)先級;PS=0,低優(yōu)先級。

(2)?PT1——片內(nèi)定時器T1中斷優(yōu)先級設(shè)定位。

PTl=1,高優(yōu)先級;PT1=0,低優(yōu)先級。

(3)?PX1——外部中斷1中斷優(yōu)先級設(shè)定位。

PX1=1,高優(yōu)先級;PX1=0,低優(yōu)先級。

(4)?PT0——片內(nèi)定時器T0中斷優(yōu)先級設(shè)定位。

PT0=1,高優(yōu)先級;PT0=0,低優(yōu)先級。

(5)?PX0——外部中斷0中斷優(yōu)先級設(shè)定位。

PX0=1,高優(yōu)先級;PX0=0,低優(yōu)先級。

MCS-51單片機中斷優(yōu)先級管理遵循的基本原則是:高優(yōu)先級中斷源可中斷正在執(zhí)行的低優(yōu)先級中斷服務(wù)程序,除非在執(zhí)行低優(yōu)先級服務(wù)程序時,設(shè)置了CPU關(guān)中斷或禁止某些高優(yōu)先級中斷源的中斷;同級或低優(yōu)先級中斷源不能中斷正在執(zhí)行的中斷服務(wù)程序。

為了符合上述原則,在中斷系統(tǒng)內(nèi)部設(shè)置了兩個用戶不可訪問的優(yōu)先級狀態(tài)觸發(fā)器。其中一個是高優(yōu)先級狀態(tài)觸發(fā)器,置1時表示當(dāng)前服務(wù)的中斷是高優(yōu)先級的,以阻止其他中斷申請;另一個是低優(yōu)先級狀態(tài)觸發(fā)器,置1時表示當(dāng)前服務(wù)的中斷是低優(yōu)先級的,它允許被高優(yōu)先級的中斷申請所中斷。當(dāng)系統(tǒng)復(fù)位時,IP寄存器被清0,將5個中斷源均設(shè)置為低優(yōu)先級中斷。

如果同一級的幾個中斷源同時向CPU申請中斷,CPU便通過內(nèi)部硬件查詢邏輯按自然優(yōu)先級決定響應(yīng)順序。各中斷源按自然優(yōu)先級由高到低的排列順序如表5-1所示。表5-1同級中斷源內(nèi)部自然優(yōu)先級順序5.1.4中斷服務(wù)的流程

1.響應(yīng)中斷的條件及過程

中斷處理過程一般分為3個階段,即中斷響應(yīng)、中斷處理和中斷返回。

1)中斷響應(yīng)

中斷響應(yīng)是指在滿足CPU的中斷響應(yīng)條件之后,CPU對中斷源中斷請求的回答。在這個階段,CPU要完成中斷服務(wù)以前的所有準備工作,包括保護斷點及把程序轉(zhuǎn)向中斷程序的入口地址。

(1)?CPU響應(yīng)中斷的基本條件如下:

①有中斷源發(fā)出中斷申請;

②中斷總允許位EA=1,即CPU開放中斷;

③請求中斷的中斷源的中斷允許位置1,即該中斷源可以向CPU發(fā)中斷申請。

CPU在每個機器周期的S5P2期間,采樣中斷源,而在下一個機器周期的S6期間按優(yōu)先級順序查詢各中斷標志,如查詢到某個中斷標志為1,將在再下一個機器周期S1期間按優(yōu)先級順序進行中斷處理。但在下列任何一種情況存在時,中斷響應(yīng)會被阻止。

CPU正在執(zhí)行同級或高一級的中斷服務(wù)程序;

現(xiàn)行機器周期不是正在執(zhí)行的指令的最后一個機器周期,即現(xiàn)行指令完成前不響應(yīng)任何中斷請求;

當(dāng)前正在執(zhí)行的是中斷返回指令RETI或訪問特殊功能寄存器IE或IP的指令。也就是說,在執(zhí)行RETI或是訪問IE、IP的指令后,至少需要再執(zhí)行—條其他指令,才會響應(yīng)中斷請求。

中斷查詢在每個機器周期都要重復(fù)執(zhí)行。如果CPU響應(yīng)中斷的基本條件已滿足,但由于上述3個封鎖條件之一而未被及時響應(yīng),待封鎖中斷的條件撤消后,若中斷標志也已消失,則本次被拖延的這個中斷請求就不會被響應(yīng)。

(2)中斷響應(yīng)過程。如果中斷響應(yīng)的條件滿足,且不存在中斷封鎖的情況,則CPU將響應(yīng)中斷源的中斷請求,進入中斷響應(yīng)周期。CPU在中斷響應(yīng)周期要完成下列操作:

①將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1;

②由硬件清除相應(yīng)的中斷請求標志;

③執(zhí)行一條由硬件生成的長調(diào)用指令LCALL。該指令將自動把斷點地址(PC值)壓入堆棧保護起來。然后將對應(yīng)的中斷入口地址送入程序計數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址(見表5-2)去執(zhí)行中斷服務(wù)程序。表5-2中斷源入口地址表

(3)中斷服務(wù)與返回。中斷服務(wù)程序從入口地址開始執(zhí)行,一直到返回指令“RETI”為止,這個過程稱為中斷服務(wù)。在編寫中斷服務(wù)程序時應(yīng)注意以下幾點:

①因各入口地址之間只相隔8個字節(jié),一般的中斷服務(wù)程序是存放不下的。所以通常在中斷入口地址單元處存放一條無條件轉(zhuǎn)移指令,這樣就可使中斷服務(wù)程序靈活地安排在64KB程序存儲器的任何空間。

②若要在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,可先用軟件關(guān)閉CPU中斷,或禁止某中斷源中斷,在中斷返回前再開放中斷。③在保護現(xiàn)場和恢復(fù)現(xiàn)場時。為了不使現(xiàn)場數(shù)據(jù)受到破壞或造成混亂,通常規(guī)定CPU不響應(yīng)新的中斷請求。因此在編寫中斷服務(wù)程序時,應(yīng)注意在保護現(xiàn)場之前要關(guān)中斷,在保護現(xiàn)場之后根據(jù)需要開中斷,以便允許更高級的中斷請求中斷它。在恢復(fù)現(xiàn)場之前也應(yīng)關(guān)中斷,恢復(fù)現(xiàn)場后再開

中斷。

中斷服務(wù)程序的最后一條是返回指令RETI。RETI指令的執(zhí)行標志著中斷服務(wù)程序的結(jié)束,該指令將清除響應(yīng)中斷時被置位的優(yōu)先級狀態(tài)觸發(fā)器,然后自動將斷點地址從棧頂彈出,裝入程序計數(shù)器PC,使程序返回到被中斷的程序斷點處,繼續(xù)向下執(zhí)行。

2)中斷請求的撤除

CPU響應(yīng)中斷請求后,在中斷返回(RETI)前,該中斷請求信號必須撤除,否則會引起另外一次中斷。但以上幾種中斷被響應(yīng)時,中斷請求標志并非都能被清除,這一點應(yīng)引起注意。采用邊沿觸發(fā)的外部中斷標志IE0或IE1和定時器中斷標志TF0或TF1,CPU響應(yīng)中斷后,能用硬件自動清除,無需采取其他措施。但在電平觸發(fā)時,IE0或IE1受外部引腳中斷信號(或)的直接控制,CPU無法控制IE0或IE1,需要另外考慮撤除中斷請求信號的措施。如通過外加硬件電路,并配合軟件來解決;串行口中斷請求標志TI和RI也不能由硬件自動清除,需要在中斷服務(wù)程序中用軟件來清除相應(yīng)的中斷請求標志。

2.中斷程序舉例

例5-11個外部中斷源系統(tǒng)。

如圖5-3所示的外部中斷源為單片機控制的數(shù)據(jù)傳輸系統(tǒng)。P1口設(shè)置為數(shù)據(jù)輸入口,外圍設(shè)備每準備好一個數(shù)據(jù)時,發(fā)出一個選通信號,向CPU發(fā)出中斷請求(

)。圖5-3數(shù)據(jù)采集系統(tǒng)示意圖采用電平觸發(fā)方式時,外部中斷請求標志IE0/IE1在CPU響應(yīng)中斷時不能由硬件自動清除,本系統(tǒng)采用的是硬件清除的方法。

程序清單:

ORG 0000H

START: LJMP MAIN ;跳轉(zhuǎn)到主程序

ORG 0003H

LJMP INT0 ;轉(zhuǎn)向中斷服務(wù)程序

ORG 0030H ;主程序MAIN:CLR IT0 ;設(shè)為電平觸發(fā)方式

SET

EA;CPU開放中斷

SET

EX0;允許中斷

MOVR0,#30H;設(shè)置數(shù)據(jù)區(qū)地址指針

…… ;主程序的其他工作

ORG 0100H ;中斷服務(wù)程序INT0:PUSH

PSW;保護現(xiàn)場

PUSH

A

CLR

P3.0;P3.0輸出“0”

NOP

NOP

SETB

P3.0 ;P3.0輸出“1”

MOV

A,P1;輸入外部數(shù)據(jù)

MOV

@R0,?A;存入數(shù)據(jù)存儲器

INC

R0 ;修改數(shù)據(jù)指針,指向下一個單元

…… ;可以加入其他工作

POP

A;恢復(fù)現(xiàn)場

POP

PSW

RETI;中斷返回

5.2MCS-51單片機的定時器/計數(shù)器

將計算機應(yīng)用于測控系統(tǒng)時,常常需要有實時時鐘以實現(xiàn)定時或延時控制,或需要對外部事件進行計數(shù)。雖然定時的實現(xiàn)可由CPU利用軟件編程來完成,但這樣就會降低CPU的效率,這時可使用硬件定時計數(shù)器。

MCS-51系列單片機內(nèi)有兩個可編程的定時器/計數(shù)器T0和T1;MCS-52系列中除這兩個定時器外,還有一個定時器/計數(shù)器T2。本章主要介紹MCS-51的兩個定時器的結(jié)構(gòu)、原理、工作方式及其應(yīng)用。5.2.1計算機定時方法概述

在單片機的控制應(yīng)用中,定時是必不可少的,可供選擇的定時方法有:

1)軟件定時

軟件定時靠執(zhí)行一個循環(huán)程序進行時間延遲。軟件定時的特點是時間精確,且不需要外加硬件電路。但軟件定時要占用CPU,增加CPU開銷,因此軟件定時的時間不宜太長。此外,軟件定時方法在某些情況下無法使用。

2)硬件定時

對于時間較長的定時,常使用硬件電路完成。硬件定時方法的特點是定時功能全部由硬件電路完成,不占用CPU時間。但需通過改變電路中的元件參數(shù)來調(diào)節(jié)定時時間,在使用上不夠方便。

3)可編程定時器定時

這種定時方法是通過對系統(tǒng)時鐘脈沖的計數(shù)來實現(xiàn)的。計數(shù)值通過程序設(shè)定,改變計數(shù)值,也就改變了定時時間,使用既靈活又方便。此外,也有采用計數(shù)方法實現(xiàn)定時,因此可編程定時器都兼有計數(shù)功能,可對外來脈沖進行計數(shù)。

5.2.2MCS-51單片機定時器/計數(shù)器的結(jié)構(gòu)5.2.2MCS-51單片機定時器/計數(shù)器的結(jié)構(gòu)

1.定時器/計數(shù)器的基本結(jié)構(gòu)

MCS-51單片機共有2個定時器/計數(shù)器,分別為定時器/計數(shù)器0(T0)和定時器/計數(shù)器1(T1)。它們都有16位加法計數(shù)結(jié)構(gòu)。16位的定時器/計數(shù)器分別由兩個8位特殊功能寄存器組成:定時器/計數(shù)器T0由TH0和TL0構(gòu)成;定時器/計數(shù)器T1由TH1和TL1構(gòu)成。這4個計數(shù)器均屬特殊功能寄存器。

此外,其內(nèi)部還有2個8位的特殊功能寄存器TMOD和TCON。其中TMOD是定時器的工作方式寄存器,TCON是控制寄存器,主要用于定時器/計數(shù)器管理與控制。

2.定時器/計數(shù)器的工作原理

16位的定時器/計數(shù)器的核心是一個加1計數(shù)器,如圖5-4所示。當(dāng)設(shè)置為定時工作方式時,對機器周期TM計數(shù)。這時計數(shù)器的計數(shù)脈沖由振蕩器的12分頻信號產(chǎn)生,即每經(jīng)過一個機器周期,計數(shù)值加1,直至計滿溢出。若中斷是開放的,這時可向CPU申請中斷。當(dāng)晶振頻率fOSC=12MHz時,計數(shù)頻率=1MHz,或計數(shù)周期=1μs。從開始計數(shù)到溢出的這段時間就是所謂的定時時間。在機器周期固定的情況下,定時時間的長短與計數(shù)器事先裝入的初值有關(guān),裝入的初值越大,定時越短。當(dāng)設(shè)置為計數(shù)工作方式時,通過引腳T0(P3.4)或T1(P3.5)對外部脈沖信號計數(shù)。當(dāng)T0或T1腳上輸入的脈沖信號出現(xiàn)由1到0的負跳變時,計數(shù)器值加1。CPU在每個機器周期的S5P2期間采樣T0和T1引腳的輸入電平,若前一個機器周期采樣值為1,后一個機器周期采樣值為0,則在緊跟著的再下一個周期的S3P1期間,計數(shù)器的計數(shù)值加1。因此,檢測一個從1到0的負跳變需要2個機器周期,即24個振蕩周期,故最高計數(shù)頻率為晶振頻率fOSC的24分頻。雖然對外部輸入信號的占空比沒有特殊要求,但為了確保某個給定電平在變化前至少被采樣一次,要求高電平(或低電平)保持時間至少為1個完整的機器周期。圖5-4MCS-51定時器/計數(shù)器工作原理圖當(dāng)通過CPU用軟件設(shè)定了定時器T0或T1的工作模式后,定時器就會按設(shè)定的工作方式與CPU并行運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU的當(dāng)前工作。

除了可以選擇定時模式或計數(shù)模式外,定時器還有4種工作方式可供選擇,即定時器可構(gòu)成4種電路結(jié)構(gòu)模式(T1只有3種)。5.2.3MCS-51單片機定時器/計數(shù)器工作方式

MCS-51單片機內(nèi)部的定時器/計數(shù)器可設(shè)置為4種工作方式,由兩個8位特殊功能寄存器TMOD和TCON進行管理與控制。在使用前必須由CPU將一些命令(或稱控制字)和初始值寫入特殊功能寄存器TMOD和TCON,并給對應(yīng)的定時器/計數(shù)器(TH、TL)賦初值,以定義定時器/計數(shù)器的工作模式、工作方式和實現(xiàn)的控制功能。

1.定時器/計數(shù)器的管理與控制

1)工作方式寄存器TMOD

TMOD用于定義T0和T1的工作模式,選擇定時器/計數(shù)器工作方式以及啟動方式等。格式如下:其中低4位用于定義定時器T0,高4位用于定義定時器T1。各位的作用分述如下:

(1)?M1和M0:工作方式選擇位。由M1M0的4種組合狀態(tài)確定4種工作方式,見

表5-3。表5-3定時器/計數(shù)器的工作模式

(2)?C/:定時器/計數(shù)器功能選擇位。當(dāng)C/

=0時,作為定時器使用;當(dāng)C/

=1時,作為計數(shù)器使用。

(3)?GATE:門控位。用于選擇定時器T0或T1的啟動方式。即啟動是否受外部引腳或的電平影響。當(dāng)GATE=0時,只要用軟件使TR0或TR1置1就可啟動定時器工作;當(dāng)GATE=1時,只有在或為高電平,且將TR0或TR1置1時,才能啟動定時器T0或T1工作。

TMOD是工作方式寄存器,在片內(nèi)RAM中的地址為89H,它不能位尋址,只能用字節(jié)傳送指令設(shè)置定時器的工作方式。復(fù)位時,TMOD所有位均清0。

2)控制寄存器TCON

TCON是定時器/計數(shù)器的控制寄存器,主要用于定時器/計數(shù)器T0或T1的啟、停控制,標志定時器的溢出和中斷情況。TCON各位的格式如下:

(1)?TF1(TCONN.7):定時器T1溢出標志。當(dāng)T1溢出時,由硬件自動使TF1置1,并可向CPU申請中斷。當(dāng)進入中斷服務(wù)程序時,由硬件自動將TF1清0。TF1也可以由用戶軟件查詢和軟件清0。

(2)TR1(TCONN.6):定時器T1運行控制位。由軟件來置1或清0。當(dāng)TR1=1時,T1啟動工作;當(dāng)TR1=0時,T1停止工作。

(3)?TF0(TCONN.5):定時器T0溢出標志。其功能和操作情況同TF1。

(4)?TR0(TCONN.4):定時器T0運行控制位。其功能和操作情況同TR1。

(5)?IE1(TCONN.3):外部中斷1(

)請求標志。

(6)?IT1(TCONN.2):外部中斷1觸發(fā)方式選擇位。

(7)?IE0(TCONN.1):外部中斷0(

)請求標志。

(8)?IT0(TCONN.0):外部中斷0觸發(fā)方式選擇位。

TCON中的低4位(IE1、IT1、IE0、IT0)與中斷有關(guān),其詳細功能已在5.1節(jié)中斷系統(tǒng)中詳細討論。

TCON在片內(nèi)RAM中的字節(jié)地址為88H。它是可以位尋址的。當(dāng)系統(tǒng)復(fù)位時,TCON的所有位均被清0。

2.定時器/計數(shù)器的工作方式

定時器/計數(shù)器T0和T1有4種工作方式,即方式0、方式1、方式2和方式3,它是通過軟件對TMOD中M1、M0位的設(shè)置選擇的。這4種工作方式的區(qū)別在于對T0(或T1)的兩個8位計數(shù)器TH0、TL0(或TH1、TL1)的計數(shù)操作方式不同。在方式0、1、2中,T0和T1的用法基本一致,而方式3只有T0才有?,F(xiàn)以T0為例介紹。

1)方式0

方式0是一個13位的定時器/計數(shù)器。圖5-5為定時器T0在方式0下的邏輯結(jié)構(gòu)圖圖5-5定時器/計數(shù)器0的工作方式0結(jié)構(gòu)圖在方式0下,由TL0的低5位(高3位未用)和TH0的8位組成13位計數(shù)器。當(dāng)TL0的低5位溢出時向TH0進位,而當(dāng)TH0溢出時則向中斷標志位TF0置位,并在中斷允許時申請中斷。

由圖可見,選擇定時還是計數(shù)模式受邏輯軟開關(guān)C/

(TMOD中的C/位)控制。當(dāng)C/

=?0時,工作于定時器工作方式,計數(shù)脈沖是由振蕩器經(jīng)12分頻產(chǎn)生的。加1計數(shù)器對機器周期計數(shù)。其定時時間按下式計算:

定時時間=(213-計數(shù)初值TC)?×?機器周期

當(dāng)C/

=1時,定時器工作于計數(shù)器工作方式,對外部輸入端T0或T1的輸入脈沖計數(shù)。當(dāng)外部信號電平發(fā)生1到0跳變時,計數(shù)器加1。

13位的加1計數(shù)器的啟、停受一些邏輯門控制,當(dāng)GATE=0時,或門輸出為1(與無關(guān))。只要TR0=1,則與門輸出為1,控制開關(guān)接通計數(shù)器,允許T0在原有值上做加法計數(shù),直至溢出。溢出時,13位計數(shù)器復(fù)0,TF0置1,并申請中斷,還可從0開始計數(shù)。若TR0=0,則斷開控制開關(guān),停止計數(shù)。

當(dāng)GATE=1,并且TR0=1時,則或門、與門輸出僅受

控制。這時外部信號電平通過引腳直接開啟或關(guān)斷計數(shù)通道。即當(dāng)從0變?yōu)?則開始計數(shù);若從1變?yōu)?,停止計數(shù)。應(yīng)用這種控制方法可以測量在輸入端出現(xiàn)的外部信號的脈沖寬度。

例5-2

設(shè)單片機晶振頻率為6MHz,使用定時器1以方式0產(chǎn)生周期為500?

s的等寬的方波連續(xù)脈沖,并由P1.0輸出。用查詢方式編寫程序。

第1步,計算計數(shù)初值。

對周期500

s的等寬方波,定時時間應(yīng)為250

s。若使用6MHz晶振,一個機器周期為2

s。方式0為13位計數(shù)結(jié)構(gòu),設(shè)待求的計數(shù)初值為X,則:

定時時間=(213-計數(shù)初值TC)?×?機器周期

250?×?26=(213-X)?×?2?×?26

X=8067;二進制數(shù)表示為1111110000011B;十六進制數(shù)高8位表示為0FCH(TH1),低5位表示為03H(TL1)。第2步,TMOD寄存器初始化。

(1)把定時器/計數(shù)器1設(shè)定為方式0,則M1M0=00;

(2)為實現(xiàn)定時功能,應(yīng)使C/=0;

(3)為實現(xiàn)定時器/計數(shù)器1的運行控制,則GATE=0;

(4)定時器/計數(shù)器0不用,有關(guān)設(shè)定為0。

因此,TMOD寄存器應(yīng)初始化為00H。

第3步,由定時器控制寄存器TCON中的TR1位控制定時器的啟動和停止。

TR1=1啟動,TR1=0停止。第4步,程序設(shè)計。

MOV

TMOD,#00H;設(shè)置T1為工作方式0

MOV

TH1,#0FCH ;設(shè)置計數(shù)初值

MOV

TL1,#03H;

MOV

IE,#00H;禁止中斷

LOOP:SETB

TR1 ;啟動定時

JBCTF1,LOOP1;查詢計數(shù)溢出

AJMP LOOP

LOOP1:MOVTH1,#0FCH ;重新設(shè)置計數(shù)初值

MOVTL1,#03H

CLR TF1 ;計數(shù)溢出標志位清0

CPL P1.0;輸出取反

AJMPLOOP ;重復(fù)循環(huán)

2)方式1

定時器/計數(shù)器工作于方式1時為一個16位的計數(shù)器。其邏輯結(jié)構(gòu)、操作及運行控制幾乎與方式0的完全一樣,差別僅在于計數(shù)器的位數(shù)不同,如圖5-6所示。在方式1中TL和TH均為8位,TL和TH一起構(gòu)成了16位計數(shù)器。用于定時工作方式1時,定時時間為

定時時間=(216-計數(shù)初值TC)?×?機器周期

用于計數(shù)器工作方式時,最大計數(shù)值為216=65536。圖5-6定時器/計數(shù)器T0工作方式1的結(jié)構(gòu)圖

例5-3

題目同例5-2,但要求以中斷方式完成。單片機晶振頻率為6MHz,使用定時器1以工作方式1產(chǎn)生周期為500

s的等寬連續(xù)正方波脈沖,并在P1.0端輸出。

第1步,計算計數(shù)初值。

TH1=0FFH TL1=83H

第2步,TMOD寄存器初始化。

TMOD=10H第3步,程序設(shè)計。

主程序:

MOVTMOD,#10H;定時器1工作方式1

MOVTH1,#0FFH ;設(shè)置計數(shù)初值

MOVTL1,#83H

SETBEA ;開中斷

SETBET1 ;允許定時器1中斷

LOOP:SETBTR1 ;定時開始

HERE:SJMP$ ;等待中斷中斷服務(wù)程序:

MOVTH1,#0FFH ;重新設(shè)置計數(shù)初值

MOVTL1,#83H

CPLP1.0 ;輸出取反

RETI ;中斷返回

3)方式2

定時器/計數(shù)器工作于方式2時,將兩個8位計數(shù)器TH、TL分成獨立的兩部分,組成一個可自動重裝載的8位定時器/計數(shù)器。其邏輯結(jié)構(gòu)如圖5-7所示圖5-7定時器/計數(shù)器T0工作方式2的結(jié)構(gòu)圖

在方式0和方式1中,當(dāng)計滿溢出時,計數(shù)器TH和TL的初值全部為0,若要進行重復(fù)定時或計數(shù),還需用軟件向TH和TL重新裝入計數(shù)初值。而工作在方式2時,16位計數(shù)器被拆成兩個,TL用作8位計數(shù)器,TH用以存放8位的計數(shù)初值。在程序初始化時,TL和TH由軟件賦予相同的初值。計數(shù)過程中,若TL計數(shù)溢出,一方面將TF置1,請求中斷;另一方面自動將TH中的初值重新裝入TL中,使TL從初值開始重新計數(shù)。這可以多次循環(huán)重裝入,直到TR=0才停止計數(shù)。

用于定時工作方式時,定時時間t為

t?=(28-計數(shù)初值TC)?×?機器周期

方式2用于計數(shù)工作方式時,最大計數(shù)值(初值=0時)是28。方式2特別適合于用作較精確的定時和脈沖信號發(fā)生器,還常用作串行口波特率發(fā)生器(詳見第6章有關(guān)內(nèi)容)。例5-4

使用定時器0以工作方式2產(chǎn)生100

s定時,在P1.0輸出周期為200

s的連續(xù)正方波脈沖。已知晶振頻率為6MHz。

第一步,計算計數(shù)初值。

6MHz晶振下,一個機器周期為2

s,以TH0作重裝載的預(yù)置寄存器,TL0作8位計數(shù)器,假設(shè)計數(shù)初值為X,則:

t?=(28-計數(shù)初值TC)?×?機器周期

100?×?26=(28-X)?×?2?×?26

X=206D=11001110B=0CEH

TH0=TL0=0CEH第二步,TMOD寄存器初始化。

(1)定時器/計數(shù)器0為工作方式2,M1M0=10;

(2)為實現(xiàn)定時功能C/=0;

(3)為實現(xiàn)定時器/計數(shù)器0的運行,GATE=0;

(4)定時器/計數(shù)器1不用,有關(guān)位設(shè)定為0。

TMOD=02H

第三步,程序設(shè)計。

(1)用查詢方式設(shè)計程序。

MOVIE,#00H ;禁止中斷

MOVTMOD,#02H;設(shè)置定時器0為工作

方式2

MOVTH0,#0CEH ;保存計數(shù)初值

MOVTL0,#0CEH ;設(shè)置計數(shù)初值

SETBTR0 ;啟動定時

LOOP:JBCTF0,LOOP1;查詢計數(shù)溢出

AJMPLOOP

LOOP1:CPL P1.0 ;輸出方波

AMP LOOP ;重復(fù)循環(huán)

由于方式2具有自動重裝載功能,因此計數(shù)初值只需要設(shè)置一次,以后不再需要軟件重置。

(2)用中斷方式設(shè)計程序。

主程序:

MOVTMOD,#02H;設(shè)置定時器0為工作方式2

MOVTH0,#0CEH;保存計數(shù)初值

MOVTL0,#0CEH;設(shè)置計數(shù)初值

SETB EA;開中斷

ETB ET0 ;允許定時器0中斷

LOOP:SETBTR0;等待中斷

HERE: SJMP $

中斷服務(wù)程序:

CPL P1.0

RETI

4)方式3

方式3只適用于定時器T0。在方式3下,T0被分成兩個相互獨立的8位計數(shù)器TL0和TH0,如圖5-8所示。

當(dāng)定時器T0工作于方式3時,TL0使用T0本身的控制位、引腳和中斷源,即C/、GATE、TR0、TF0和T0(P3.4)引腳、

(P3.2)引腳,并可工作于定時器模式或計數(shù)器模式。除僅用8位寄存器TL0外,其功能和操作情況與方式0和方式1的一樣。圖5-8定時器/計數(shù)器T0工作方式3的結(jié)構(gòu)圖由圖5-8可見,TH0只能工作在定時器狀態(tài),對機器周期進行計數(shù),并且占用了定時器T1的控制位TR1和TF1,同時占用了T1的中斷源。TH0的啟動和關(guān)閉僅受TR1的控制。方式3為定時器T0增加了一個額外的8位定時器。

定時器T1沒有方式3狀態(tài),若設(shè)置為方式3,其效果與TR1=0一樣,定時器T1停止工作。

在定時器T0工作于方式3時,T1仍可設(shè)置為方式0~方式2。由于TR1、TF1和T1的中斷源均被定時器T0占用,此時只能通過T1控制位C/來切換定時或計數(shù)。在T0設(shè)置為方式3工作時,一般是將定時器T1作為串行口波特率發(fā)生器,或用于不需要中斷的場合。

5.3MCS-51單片機外部中斷源的擴展

MCS-51單片機僅提供兩個外部中斷源輸入端(、

),而實際應(yīng)用系統(tǒng)中可能有兩個以上的外部中斷源,這時必須對外部中斷源進行擴展。

擴展外部中斷源的方法有:通過線或邏輯實現(xiàn)的擴展法,利用定時器/計數(shù)器擴展法,以及硬件電路擴展法。下面介紹通過線或邏輯實現(xiàn)外部中斷源擴展法和定時器/計數(shù)器擴展法。5.3.1通過線或邏輯實現(xiàn)擴展

例5-5

多個外部中斷源系統(tǒng)。

假設(shè)有5個外部中斷源,中斷優(yōu)先級排隊順序為:X0、X1、X2、X3、X4。試設(shè)計它們與80C51單片機的接口。

系統(tǒng)有多個外部中斷源時,可按它們的輕重緩急進行中斷優(yōu)先級排隊,將最高優(yōu)先級的中斷源接在端,其余中斷源用線或電路接到端,同時分別將它們引入一個I/O口,以便在的中斷服務(wù)程序中由軟件按預(yù)先設(shè)定的優(yōu)先級順序查詢中斷的來源。使用此方法原則上可以處理任意多個中斷源本例中將X0經(jīng)非門接到,其余的X1、X2、X3、X4經(jīng)集電極開路的非門構(gòu)成或非電路接到端,并分別與P1.0、P1.1、P1.2、P1.3相連,如圖5-9所示。當(dāng)X0~X4中有一個或幾個有效時,都會通過引腳向CPU發(fā)出中斷請求。在的中斷服務(wù)程序中依次查詢P1.0~P1.3,就可以確定究竟是哪個中斷提出請求。圖5-9多個外部中斷源系統(tǒng)系統(tǒng)的中斷應(yīng)用程序段:

ORG0003H

LJMPINTE0 ;轉(zhuǎn)外部中斷0服務(wù)程序入口

ORG0013H

LJMPINTE1 ;轉(zhuǎn)外部中斷1服務(wù)程序入口

INTE0: PUSHPSW ;X0中斷服務(wù)程序

PUSHA

POPA

POPPSW

RETINTE1:PUSH PSW;中斷服務(wù)程序

PUSH A

JB P1.0,DV1;P1.0為1,轉(zhuǎn)X1中斷服務(wù)程序

JB P1.1,DV2;P1.1為1,轉(zhuǎn)X2中斷服務(wù)程序

JB P1.2,DV3;P1.2為1,轉(zhuǎn)X3中斷服務(wù)程序

JB P1.3,DV4;P1.3為1,轉(zhuǎn)X4中斷服務(wù)程序

INTRET:POPA

POPPSW

RETIDV1: ;X1中斷服務(wù)程序

AJMPINTRET

DV2: ;X2中斷服務(wù)程序

AJMPINTRET

DV3: ;X3中斷服務(wù)程序

AJMPINTRET

DV4: ;X4中斷服務(wù)程序

AJMPINTRET當(dāng)所要處理的外部中斷源的數(shù)目較多而其速度又要求較快時,采用軟件查詢的方法進行中斷優(yōu)先級排隊常常不能滿足時間上的要求,采用硬件對外部中斷源進行優(yōu)先級排隊就可避免這個問題。

常用的硬件排隊電路是74LS148優(yōu)先權(quán)編碼器,它具有8個中斷輸入端,3個編碼輸出端。在使能端控制下,只要8個輸入端中任意一個輸入為低電平,就有一組相應(yīng)的編碼輸出,如果8個輸入端同時有多個輸入為低電平,則輸出編號最大的輸入所對應(yīng)的編碼。5.3.2通過定時器/計數(shù)器實現(xiàn)擴展

當(dāng)實際應(yīng)用系統(tǒng)中有兩個以上的外部中斷源,而片內(nèi)定時器/計數(shù)器未使用時,可以利用定時器/計數(shù)器來擴展外部中斷源。

擴展的方法是:將定時器/計數(shù)器設(shè)置成計數(shù)器方式,計數(shù)初值設(shè)定為滿程,將帶擴展的外部中斷源接到定時器/計數(shù)器的外部計數(shù)引腳。從該引腳輸入一個下降沿信號,計數(shù)加1后便產(chǎn)生定時器/計數(shù)器的溢出中斷。因此可以把定時器/計數(shù)器的外部計數(shù)引腳作為擴展中斷源的中斷輸入端。擴展中斷源的步驟為:

(1)設(shè)置定時器/計數(shù)器為工作方式2,即自動裝載式8位計數(shù),以便在一次中斷響應(yīng)后,自動為下一次中斷請求做好準備。

(2)高低8位計數(shù)器(TH和TL)均預(yù)置為(0FFH)。

(3)擴展的外部中斷請求信號接計數(shù)輸入端(T0或T1)。

(4)把擴展外部中斷服務(wù)程序按所用的定時器/計數(shù)器中斷入口地址存放。例如,以定時器/計數(shù)器0擴展一個外部中斷,其初始化程序段為:

MOVTMOD,#06H;設(shè)置計數(shù)器0為工作方式2

MOVTH0,#0FFH ;置計數(shù)初值

MOVTL0,#0FFH

SETEA ;開中斷

SETET0 ;計數(shù)器0允許中斷

SETTR0 ;計數(shù)啟動

5.4其他類型單片機的對照描述

與MCS-51系列單片機相比,PIC系列單片機在結(jié)構(gòu)上有較大不同,其定時器/計數(shù)器本身是一個寄存器,結(jié)構(gòu)比較簡單,但與之配合的控制部分比較復(fù)雜。本節(jié)以基本型號PIC16C5X為例簡述其結(jié)構(gòu)及工作原理。5.4.1PIC16C5X定時器/計數(shù)器的控制結(jié)構(gòu)

PIC16C5X單片機片內(nèi)設(shè)有1個定時器/計數(shù)器,稱為RTCC。RTCC是一個8位計數(shù)寄存器,可以對內(nèi)部指令周期(fOSC/4)計數(shù)或?qū)釉赗TCC引腳上的外部脈沖計數(shù)。為了擴大定時器/計數(shù)器的范圍,PIC16C5X單片機為RTCC配備了1個預(yù)分頻器(PRESCALER),通過預(yù)分頻值的選擇可以將定時器/計數(shù)器范圍擴大256倍。另外,通過多路開關(guān)切換,還可以將預(yù)分頻器分配給看門狗定時器(WDT),對WDT的最大分頻比為128倍。圖5-10給出了預(yù)分頻器的結(jié)構(gòu)以及與RTCC和WDT之間的連接關(guān)系。圖5-10預(yù)分頻器的結(jié)構(gòu)以及與RTCC和WDT之間的連接關(guān)系分頻比的設(shè)定及分頻對象的選擇可以通過對預(yù)分頻/選擇寄存器(OPTION)參數(shù)寫入實現(xiàn),OPTION共有6位,格式及內(nèi)容如表5-4所示。表5-4OPTION的格式及內(nèi)容注:單片機復(fù)位后OPTION的內(nèi)容全為“1”,寫入OPTION的內(nèi)容要通過兩步完成,即先將寫入內(nèi)容放入工作寄存器W中,然后再用OPTION指令完成OPTION內(nèi)容寫入。

由圖5-10可以看出,預(yù)分頻電路的核心部分是1個8位計數(shù)器和1個8選1多路開關(guān)。預(yù)分頻電路的輸入脈沖來源有3種,參見表5-5。表5-5輸入脈沖來源及控制邏輯5.4.2相關(guān)部分及使用說明

1.RTCC的相關(guān)部分

PIC16C5X單片機片內(nèi)設(shè)有1個看門狗定時器(WDT),其核心是1個片內(nèi)RC振蕩/計數(shù)器(與芯片時鐘電路無關(guān)),由配置EPROM設(shè)定,在WDT使能允許(WDTENABLE)下,可以在計滿后產(chǎn)生溢出并復(fù)位。WDT溢出時間周期約18ms(RC振蕩器的振蕩頻率與溫度、工作電壓有關(guān))。預(yù)分頻器分配給WDT的最大溢出周期為2.58s(即1︰128)。WDT在溢出前執(zhí)行CLRWDT指令,該指令清“0”WDT(如果預(yù)分頻器分配給WDT,則同時被清除)。使用WDT的目的是如果干擾程序進入死循環(huán),可以通過WDT溢出復(fù)位重新開始正常程序運行。

2.RTCC的使用說明

PIC16C5X單片機片內(nèi)的RTCC是一個8位計數(shù)寄存器,輸入信號來源于內(nèi)部時鐘(fOSC/4)或外部RTCC引腳。計滿后的內(nèi)容為FFH,并在下一脈沖清0。RTCC對所有計數(shù)脈沖都延時2個指令周期,對RTCC引腳的采樣需要2個振蕩周期,對外部脈沖的最高計數(shù)頻率為N?×?fOSC/4(N為分頻比),外部最高計數(shù)頻率不得超過50MHz。

與MCS-51系列相比,PIC16C5X的RTCC的不便之處主要有2項。其一是大于8位的定時器/計數(shù)器需要靠預(yù)分頻器分頻,初值設(shè)置不夠靈活;其二是RTCC無溢出中斷,需要在程序執(zhí)行中檢測“飛讀”。目前這類問題已在新型的PIC系列單片機中有所改進

本章小結(jié)

中斷是計算機應(yīng)用中的一種重要技術(shù)手段,在自動檢測、實時控制、應(yīng)急處理等方面都要用到。中斷處理一般包括中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回4個環(huán)節(jié)。

MCS-51單片機中斷系統(tǒng)提供5個中斷源,即為外部中斷0和外部中斷1,定時器/計數(shù)器T0和T1的溢出中斷,串行口的接收和發(fā)送中斷。這5個中斷源可分為2個優(yōu)先級,由中斷優(yōu)先級IP設(shè)置它們的優(yōu)先級。同一優(yōu)先級別的中斷優(yōu)先權(quán),由系統(tǒng)硬件確定的自然優(yōu)先級排隊。

MCS-51單片機內(nèi)部有兩個可編程定時器/計數(shù)器。定時器/計數(shù)器T0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論