單片機(jī)C語言編程(定時器計數(shù)器)_第1頁
單片機(jī)C語言編程(定時器計數(shù)器)_第2頁
單片機(jī)C語言編程(定時器計數(shù)器)_第3頁
單片機(jī)C語言編程(定時器計數(shù)器)_第4頁
單片機(jī)C語言編程(定時器計數(shù)器)_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第6章章 MCS-51單片機(jī)定時器單片機(jī)定時器/計計數(shù)器數(shù)器本章本章制作:制作:劉曉霞劉曉霞第第6章章 MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器計數(shù)器目目 錄錄6.1 MCS-51定時器定時器/計數(shù)計數(shù)器的結(jié)構(gòu)及原理器的結(jié)構(gòu)及原理6.2 定時器定時器T0、T16.3 定時器定時器T26.4 定時器應(yīng)用舉例定時器應(yīng)用舉例 本章主要討論本章主要討論MCS-51單片機(jī)定時器單片機(jī)定時器/計計數(shù)器的邏輯結(jié)構(gòu)和工作原理。內(nèi)容主要有數(shù)器的邏輯結(jié)構(gòu)和工作原理。內(nèi)容主要有MCS-51單片機(jī)定時器單片機(jī)定時器T0、T1、T2的邏輯結(jié)的邏輯結(jié)構(gòu),工作方式的選擇和應(yīng)用。構(gòu),工作方式的選擇和應(yīng)用。 本章為單片機(jī)

2、的主要內(nèi)容,也是第七章本章為單片機(jī)的主要內(nèi)容,也是第七章串行口的學(xué)習(xí)的基礎(chǔ)。串行口的學(xué)習(xí)的基礎(chǔ)。第第6章章 MCS-51單片機(jī)的定時器單片機(jī)的定時器/計數(shù)器計數(shù)器6.1 MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器的結(jié)計數(shù)器的結(jié)構(gòu)及原理構(gòu)及原理主要內(nèi)容主要內(nèi)容6.1.1 MCS-51單片機(jī)定時器的結(jié)構(gòu)單片機(jī)定時器的結(jié)構(gòu)6.1.2 MCS-51單片機(jī)定時器的工作原理單片機(jī)定時器的工作原理6.1.3 定時器定時器/計數(shù)器的控制寄存器計數(shù)器的控制寄存器6.1.1 MCS-51單片機(jī)定時器的結(jié)構(gòu)單片機(jī)定時器的結(jié)構(gòu) MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器邏輯結(jié)構(gòu)圖:計數(shù)器邏輯結(jié)構(gòu)圖: CPU中斷中

3、斷溢溢出出溢溢出出溢溢出出定時器定時器 0 0定時器定時器 1 1定時器定時器 2 2TMODT2CONT2MODTCONTH0TL0TH1TL1TH2TL2RCAP2LRCAP2H模模式式模模式式T2(P1.0)T1(P3.5)T2EX(P1.1)T0(P3.4)模模式式控控制制控控制制控控制制中斷中斷重裝重裝捕獲捕獲6.1.1 MCS-51單片機(jī)定時器的結(jié)構(gòu)單片機(jī)定時器的結(jié)構(gòu) MCS-51主要由如下構(gòu)成主要由如下構(gòu)成: 三個三個16位的可編程定時器位的可編程定時器/計數(shù)器:定時計數(shù)器:定時器器/計數(shù)器計數(shù)器0、1和和2。 每個定時器有兩部分構(gòu)成:每個定時器有兩部分構(gòu)成:THx和和TLx 特

4、殊功能寄存器特殊功能寄存器T2MOD和和T2CON ,主,主要對要對T2進(jìn)行控制。進(jìn)行控制。 特殊功能寄存器特殊功能寄存器TMOD和和TCON ,主要,主要對對T0和和T1進(jìn)行控制。進(jìn)行控制。6.1.1 MCS-51單片機(jī)定時器的結(jié)構(gòu)單片機(jī)定時器的結(jié)構(gòu) 引腳引腳P3.5、P3.4、P1.0,輸入計數(shù)脈沖。,輸入計數(shù)脈沖。定時器定時器T0、T1和和T2是是3個中斷源,可以向個中斷源,可以向CPU 發(fā)出中斷請求。發(fā)出中斷請求。定時器定時器/計數(shù)器計數(shù)器T2增加了兩個增加了兩個8位的寄存器:位的寄存器:RCAP2H和和RCAP2L。特殊功能寄存器之間通過內(nèi)部總線和控制特殊功能寄存器之間通過內(nèi)部總線和

5、控制邏輯電路連接起來。邏輯電路連接起來。 6.1.2 MCS-51單片機(jī)定時器的工作原理單片機(jī)定時器的工作原理 定時器定時器/計數(shù)器計數(shù)器T0、T1、T2 的內(nèi)部結(jié)構(gòu)簡的內(nèi)部結(jié)構(gòu)簡圖如下圖所示。圖如下圖所示。C/ /T=0中斷請求中斷請求振蕩器振蕩器TLx(8位位)THx(8位位)Tx12分頻分頻TFxC/ /T=1控制控制TRx6.1.2 MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器的工作原理計數(shù)器的工作原理 從上圖可以看出:從上圖可以看出: 定時器的實(shí)質(zhì)是一個加定時器的實(shí)質(zhì)是一個加1計數(shù)器計數(shù)器。C/T =0 ,為定時器方式。,為定時器方式。計數(shù)信號由片內(nèi)振蕩電路提供,振計數(shù)信號由片內(nèi)振蕩

6、電路提供,振蕩脈沖蕩脈沖12分頻送給計數(shù)器,每個機(jī)器周期計分頻送給計數(shù)器,每個機(jī)器周期計數(shù)器值增數(shù)器值增1。 例如例如:如果晶振頻率為:如果晶振頻率為12MHz,則最高,則最高計數(shù)頻率為計數(shù)頻率為0.5MHz6.1.2 MCS-51單片機(jī)定時器單片機(jī)定時器/計數(shù)器的工作原理計數(shù)器的工作原理 C/T =1 ,為計數(shù)方式,為計數(shù)方式。計數(shù)信號由計數(shù)信號由Tx引腳引腳(P3.4、P3.5和和P1.0)輸入,每輸入一有效信號,相應(yīng)的計數(shù)輸入,每輸入一有效信號,相應(yīng)的計數(shù)器中的內(nèi)容進(jìn)行加器中的內(nèi)容進(jìn)行加1??刂菩盘柨刂菩盘朤Rx=1時,定時器啟動時,定時器啟動。當(dāng)定時器由全當(dāng)定時器由全1加到全加到全0時

7、計滿溢出,從時計滿溢出,從0開始繼續(xù)計數(shù),開始繼續(xù)計數(shù),TFx=1 ,向,向CPU申請中申請中斷。斷。6.1.3 定時器定時器/計數(shù)器的方式和控制寄存器計數(shù)器的方式和控制寄存器1、T0、T1 工作模式寄存器工作模式寄存器TMOD 功能:確定定時器的工作模式。功能:確定定時器的工作模式。其格式如圖其格式如圖6-3所示:所示:TMOD(89H)D7D6D5D4D3D2D1D0GATE C/T M1 M0GATEC/TM1M0圖圖6-3 定時器方式寄存器定時器方式寄存器TMOD GATE外部門控制位。外部門控制位。GATE1,使用外部控制門。,使用外部控制門。 TRx=1,P3.2(P3.3)=1時

8、,啟動定時器。時,啟動定時器。6.1.3 定時器定時器/計數(shù)器的方式和控制寄存器計數(shù)器的方式和控制寄存器GATE0,不使用外部門控制計數(shù)器不使用外部門控制計數(shù)器 C/T定時或計數(shù)方式選擇位定時或計數(shù)方式選擇位 。C/T0時,為定時器時,為定時器C/T1時,為計數(shù)器時,為計數(shù)器 采樣過程:采樣過程:CPU在每機(jī)器周期在每機(jī)器周期S5P2期間,期間,輸入信號進(jìn)行采樣輸入信號進(jìn)行采樣。若前一機(jī)器周期采樣值。若前一機(jī)器周期采樣值為為1,下一機(jī)器周期采樣值為,下一機(jī)器周期采樣值為0,則計數(shù)器增,則計數(shù)器增1,隨后的機(jī)器周期,隨后的機(jī)器周期S3P1期間,新的計數(shù)值期間,新的計數(shù)值裝入計數(shù)器。裝入計數(shù)器。6

9、.1.3 定時器定時器/計數(shù)器的方式和控制寄存器計數(shù)器的方式和控制寄存器 M1、M0工作模式選擇位。工作模式選擇位。如下表所示如下表所示:表表6-1 定時器定時器/計數(shù)器的工作模式計數(shù)器的工作模式M1M0工作模式工作模式功功 能能00模式模式013位定時器位定時器/計數(shù)器計數(shù)器 01模式模式116位定時器位定時器/計數(shù)器計數(shù)器10模式模式28位自動重置定時器位自動重置定時器/計數(shù)器計數(shù)器11模式模式3定時器定時器0:TL0為為8位定時器位定時器/計計數(shù)器,數(shù)器,TH0為為8位定時器。位定時器。定時器定時器1:無此方式:無此方式6.1.3 定時器定時器/計數(shù)器的方式和控制寄存器計數(shù)器的方式和控制

10、寄存器2、T0、T1的控制寄存器的控制寄存器TCONTCON(88H)D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0圖圖6-4 定時器的控制寄存器定時器的控制寄存器 TF1、TF0:T1、T0的溢出標(biāo)志位的溢出標(biāo)志位 計數(shù)溢出,計數(shù)溢出,TFx=1。 中斷方式:中斷方式:自動清零;自動清零; 查詢方式:查詢方式:軟件清零。軟件清零。6.1.3 定時器定時器/計數(shù)器的方式和控制寄存器計數(shù)器的方式和控制寄存器TR1、TR0:T1、T0啟??刂莆粏⑼?刂莆?。 置置1,啟動定時器;,啟動定時器; 清清0,關(guān)閉定時器。,關(guān)閉定時器。IE1、IE0:外部中斷:外部

11、中斷1、0請求標(biāo)志位請求標(biāo)志位IT1、IT0:外部中斷:外部中斷1、0觸發(fā)方式選擇位觸發(fā)方式選擇位注意:注意: GATE=1 ,TRx與與P3.2(P3.3) 的配的配合。合。6.2 定時器定時器T0、T1的工作模式及應(yīng)用的工作模式及應(yīng)用主要內(nèi)容主要內(nèi)容6.2.1 模式模式0的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用6.2.2 模式模式1的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用6.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用6.2.1 模式模式0的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 M1M000,選擇模式,選擇模式0。邏輯結(jié)構(gòu)如圖邏輯結(jié)構(gòu)如圖6-5所示。(

12、以所示。(以T0為例)為例) T0的結(jié)構(gòu):的結(jié)構(gòu):13位定時器位定時器/計數(shù)器。計數(shù)器。 由由TH0的的8位、位、TL0的低的低5位構(gòu)成位構(gòu)成(高高3位未位未用用) 工作過程:工作過程:TL0溢出后向溢出后向TH0進(jìn)位,進(jìn)位,TH0溢溢出后將出后將TF0置位,并向置位,并向CPU申請中斷申請中斷。 定時時間定時時間=(213-定時初值)定時初值)機(jī)器周期機(jī)器周期 最大定時時間最大定時時間:213機(jī)器周期機(jī)器周期6.2.1 模式模式0的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用C/T=1,計數(shù)方式,計數(shù)方式。計數(shù)脈沖由。計數(shù)脈沖由P3.4引腳輸引腳輸入。入。C/T=0時,定時方式時,定時方式。圖圖6-5 模

13、式模式0的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖6.2.2 模式模式1的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 M1M001時,選擇模式時,選擇模式1。邏輯結(jié)構(gòu)如下邏輯結(jié)構(gòu)如下頁圖所示。頁圖所示。 T0的結(jié)構(gòu):的結(jié)構(gòu):16位定時器位定時器/計數(shù)器。計數(shù)器。 TL0:存放計數(shù)初值的低:存放計數(shù)初值的低8位。位。 TH0存放計數(shù)初值的高存放計數(shù)初值的高8位;位;定時時間定時時間=(216-定時初值定時初值)機(jī)器周期機(jī)器周期最大定時時間最大定時時間:216機(jī)器周期機(jī)器周期6.2.2 模式模式1的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 工作過程:工作過程:當(dāng)當(dāng)TL0計滿時,向計滿時,向TH0進(jìn)進(jìn)1;當(dāng);當(dāng)TH0計滿時,溢出使計滿時,

14、溢出使TF0=1,向,向CPU申請中斷。申請中斷。 MCS-51單片機(jī)之所以設(shè)置幾乎完全一單片機(jī)之所以設(shè)置幾乎完全一 樣樣 的方的方式式0和方式和方式1,是出于與,是出于與 MCS-48單片機(jī)兼容的。單片機(jī)兼容的。6.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 M1 M0 10時,選擇模式時,選擇模式2。邏輯結(jié)構(gòu)。邏輯結(jié)構(gòu)如圖如圖6-7所示。所示。 T0的結(jié)構(gòu)的結(jié)構(gòu): TL0:8位的定時器位的定時器/計數(shù)器;計數(shù)器; TH0:8位預(yù)置寄存器,用于保存初值。位預(yù)置寄存器,用于保存初值。 工作過程:工作過程:當(dāng)當(dāng)TL0計滿溢出時,計滿溢出時,TF0置置1,向向CPU發(fā)出中斷請求;同時引起發(fā)

15、出中斷請求;同時引起重裝操作重裝操作(TH0的計數(shù)初值送到的計數(shù)初值送到TL0),進(jìn)行新一輪),進(jìn)行新一輪計數(shù)。計數(shù)。6.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用圖圖6-7 模式模式2的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖振蕩器振蕩器12分頻分頻T0(P3.4)TR0TF0中斷中斷GATE+C/T=0C/T=1TL0(8位位)TH0(8位位)P3.26.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 定時時間定時時間=(28 - 初值初值)機(jī)器周期機(jī)器周期 最大定時時間最大定時時間=28 機(jī)器周期機(jī)器周期優(yōu)點(diǎn):模式優(yōu)點(diǎn):模式2能夠進(jìn)行自動重裝載。能夠進(jìn)行自動重裝載。模式模式0和和1計數(shù)溢出后,

16、計數(shù)器為全計數(shù)溢出后,計數(shù)器為全0。循環(huán)定時或。循環(huán)定時或計數(shù)時,需要重新設(shè)置初值。計數(shù)時,需要重新設(shè)置初值。說明:說明:在模式在模式2能夠滿足計數(shù)或定時要求時,能夠滿足計數(shù)或定時要求時,盡可能使用模式盡可能使用模式2。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用1、T0模式模式3的結(jié)構(gòu)特點(diǎn)的結(jié)構(gòu)特點(diǎn) M1 M0 11,選擇模式,選擇模式3。邏輯結(jié)構(gòu)如圖邏輯結(jié)構(gòu)如圖6-8和和6-9所示:所示: 結(jié)構(gòu)結(jié)構(gòu): TL0、TH0分為兩個獨(dú)立的分為兩個獨(dú)立的8位計數(shù)器位計數(shù)器 TL0: 8位定時器位定時器/計數(shù)器計數(shù)器使用使用T0所有的資源和控制位所有的資源和控制位 TH0:8位定時器位定時器

17、使用使用T1所有的資源所有的資源(中斷向量、中斷控制中斷向量、中斷控制ET1、PT1)和控制位和控制位(TR1、TF1)6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用圖圖6-8 模式模式3下下T0的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用2、T0模式模式3時時T1的工作模式的工作模式T1可以模式可以模式0模式模式2工作。工作。T1的結(jié)構(gòu)如圖的結(jié)構(gòu)如圖6-9所示所示由于由于TF1及中斷矢量被及中斷矢量被TH0占用,所以占用,所以T1僅用作波特率發(fā)生器或其它不用中斷的地方。僅用作波特率發(fā)生器或其它不用中斷的地方。T1作波特率發(fā)生器,其計數(shù)溢出直接送作波特

18、率發(fā)生器,其計數(shù)溢出直接送至串行口。至串行口。設(shè)置好工作方式,串行口波特率設(shè)置好工作方式,串行口波特率發(fā)生器開始自動運(yùn)行。發(fā)生器開始自動運(yùn)行。 TMOD中中T1的的M1M0=11,T1停止工作。停止工作。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用圖圖6-9 模式模式3下,下,T1的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖思考:思考:T0工作在模式工作在模式3,T1怎么進(jìn)行方式設(shè)置?怎么進(jìn)行方式設(shè)置?串行口串行口重新裝入重新裝入C/T=1C/T=0T1(P3.5)振蕩器振蕩器12分頻分頻TL 1(8位位)TH 1(8位位)6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用1、定時器、定時器/計數(shù)器

19、工作模式的選擇方法計數(shù)器工作模式的選擇方法(1)首先計算計數(shù)值)首先計算計數(shù)值N(2)確定工作模式)確定工作模式原則是盡可能地選擇模式原則是盡可能地選擇模式2若若 N 256選擇模式選擇模式2,否則選擇模式,否則選擇模式1(3)如果需要增加一個定時器)如果需要增加一個定時器/計數(shù)器計數(shù)器選擇模式選擇模式3。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用2、定時器、定時器/計數(shù)器初值計數(shù)器初值X的計算方法的計算方法因?yàn)橐驗(yàn)閄 + N = 28或或216所以所以X = 28或或216-N(1)對定時器)對定時器設(shè)定時時間為設(shè)定時時間為tN = t/機(jī)器周期機(jī)器周期所以所以X = 28或或2

20、16- t/機(jī)器周期機(jī)器周期(2)對計數(shù)器)對計數(shù)器X = 28或或216- N6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用例例6-1 設(shè)單片機(jī)的振蕩頻率為設(shè)單片機(jī)的振蕩頻率為12MHz,用,用定時器定時器/計數(shù)器計數(shù)器0的模式的模式1編程,在編程,在P1.0引腳產(chǎn)引腳產(chǎn)生一個周期為生一個周期為1000s的方波,定時器的方波,定時器T0采用采用中斷的處理方式。中斷的處理方式。定時器的分析過程。定時器的分析過程。工作方式選擇工作方式選擇 需要產(chǎn)生周期信號時,選擇定時方式。定需要產(chǎn)生周期信號時,選擇定時方式。定時時間到了對輸出端進(jìn)行周期性的輸出即可。時時間到了對輸出端進(jìn)行周期性的輸出即可

21、。 工作模式選擇工作模式選擇 根據(jù)定時時間長短選擇工作模式。根據(jù)定時時間長短選擇工作模式。 首選模式首選模式2,可以省略重裝初值操作。,可以省略重裝初值操作。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 定時時間計算:定時時間計算:周期為周期為1000s的方波要的方波要求定時器的定時時間為求定時器的定時時間為500s,每次溢出時,每次溢出時,將將P1.0引腳的輸出取反,就可以在引腳的輸出取反,就可以在P1.0上產(chǎn)上產(chǎn)生所需要的方波。生所需要的方波。 定時初值計算:定時初值計算: 振蕩頻率為振蕩頻率為12MHz,則機(jī)器周期為,則機(jī)器周期為1s。 設(shè)定時初值為設(shè)定時初值為X,(65536

22、-X)1s=500s X=65036=0FE0CH定時器的初值為:定時器的初值為:TH0=0FEH,TL0=0CH 6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用C語言程序語言程序:#include /包含特殊功能寄存器庫包含特殊功能寄存器庫sbitP1_0=P10; /進(jìn)行位定義進(jìn)行位定義void main( ) TMOD=0 x01; /T0做定時器,模式做定時器,模式1TL0=0 x0c;TH0=0 xfe;/設(shè)置定時器的初值設(shè)置定時器的初值ET0=1; /允許允許T0中斷中斷 EA=1; /允許允許CPU中斷中斷TR0=1; /啟動定時器啟動定時器while(1); /等待中斷

23、等待中斷 6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用void time0_int(void) interrupt 1/中斷服務(wù)程序中斷服務(wù)程序TL0=0 x0c;TH0=0 xfe;/定時器重賦初值定時器重賦初值P1_0=P1_0;/P1.0取反,輸出方波取反,輸出方波匯編語言程序匯編語言程序:ORG0000HSJMPMAINORG000BHLJMPTIME06.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用MAIN:MOV TMOD,#01H;T0定時,模式定時,模式1MOVTL0,#0CH;置定時初值;置定時初值MOVTH0,#0FEH SETBET0;定時器;定時器T0開

24、中斷開中斷SETBEA;CPU開中斷開中斷SETBTR0;啟動定時器;啟動定時器T0SJMP$;等待定時器溢出;等待定時器溢出TIME0: ;中斷服務(wù)程序中斷服務(wù)程序MOV TL0,#0CHMOVTH0,#0FEH;重裝定時初值;重裝定時初值CPLP1.0 ;P1.0取反取反RETI ;中斷返回;中斷返回END6.2.4 模式模式 3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 例例6-2 設(shè)單片機(jī)的振蕩頻率為設(shè)單片機(jī)的振蕩頻率為12MHz,用定時器用定時器/計數(shù)器計數(shù)器0編程實(shí)現(xiàn)從編程實(shí)現(xiàn)從P1.0輸出周期輸出周期為為500s的方波。的方波。分析:方法同例分析:方法同例6-1定時時間:定時時間: 方波周

25、期為方波周期為500s,定時,定時250s。 模式選擇模式選擇: 定時器定時器0可以選擇模式可以選擇模式0、1和和2。模式。模式2最大的定時時間為最大的定時時間為256s,滿足,滿足250s的定時的定時要求,選擇模式要求,選擇模式2。6.2.4 模式模式 3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用(1)初值計算)初值計算 (256-X)1s=250s X=6;則則TH0=TL0=6 (2)程序:)程序:采用中斷處理方式的程序采用中斷處理方式的程序 :C語言程序語言程序 :# include /包含特殊功能寄存器庫包含特殊功能寄存器庫sbit P1_0=P10; 6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的

26、邏輯結(jié)構(gòu)及應(yīng)用voidmain( )TMOD=0 x02; /選擇工作模式選擇工作模式TL0=0 x06;TH0=0 x06; /為定時器賦初值為定時器賦初值 ET0=1; /允許定時允許定時0中斷中斷 EA=1;TR0=1;/啟動定時器啟動定時器0while(1);/等待中斷等待中斷void time0_int(void) interrupt 1 P1_0=P1_0;6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用匯編語言程序匯編語言程序:ORG0000HLJMPMAIN ORG000BH;中斷處理程序;中斷處理程序CPLP1.0RETIORG 0030H;主程序;主程序MAIN:MO

27、V TMOD,#02H MOV TL0,#06HMOV TH0,#06HSETB ET0;允許定時器;允許定時器0中斷中斷SETB EA;允許;允許CPU中斷中斷SETB TR0;啟動定時器;啟動定時器0SJMP $;等待中斷;等待中斷END6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用采用查詢方式處理的程序:采用查詢方式處理的程序:C語言程序:語言程序:# include sbitP1_0=P10;void main()TMOD=0 x02;TL0=0 x06;TH0=0 x06; TR0=1;while (1)while(!TF0) ;/查詢計數(shù)溢查詢計數(shù)溢出出TF0=0;P1_0

28、=P1_0;6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用匯編語言程序匯編語言程序:MAIN:MOV TMOD,#02H;主程序;主程序MOVTL0,#06HMOVTH0,#06HSETBTR0LOOP:JNBTF0,$;查詢計數(shù)溢出;查詢計數(shù)溢出CLRTF0CPLP1.0 SJMPLOOPEND6.3 定時器定時器/計數(shù)器計數(shù)器T2主要內(nèi)容主要內(nèi)容6.3.1 定時器定時器T2的特殊寄存器的特殊寄存器6.3.2 定時器定時器T2的工作方式及結(jié)構(gòu)的工作方式及結(jié)構(gòu)6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊寄存器的特殊寄存器89C52中的中的T2是一個是一個16位的、具有自動位的、具有

29、自動重裝載和捕獲能力的定時器重裝載和捕獲能力的定時器/計數(shù)器。計數(shù)器。T2的結(jié)構(gòu)的結(jié)構(gòu):除:除TL2、TH2和控制寄存器和控制寄存器T2CON及及T2MOD之外,還增加了捕獲寄存之外,還增加了捕獲寄存器器RCAP2L(低字節(jié))和低字節(jié))和RCAP2H(高字(高字節(jié))。節(jié))。 T2的計數(shù)脈沖源有兩個:的計數(shù)脈沖源有兩個:一個是內(nèi)部機(jī)一個是內(nèi)部機(jī)器周期,另一個是由器周期,另一個是由T2(P10)端輸入的外)端輸入的外部計數(shù)脈沖。部計數(shù)脈沖。 6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器T2有有4種工作方式種工作方式 自動重裝、捕獲和波自動重裝、捕獲和波特率發(fā)生器、可編

30、程時鐘輸出特率發(fā)生器、可編程時鐘輸出。 增加了兩個引腳增加了兩個引腳: T2(P1.0),),T2EX(P1.1)。)。1、定時器、定時器/計數(shù)器計數(shù)器2的控制寄存器的控制寄存器T2CON 可位尋址和字節(jié)尋址??晌粚ぶ泛妥止?jié)尋址。 功能:選擇功能:選擇T2的工作方式和工作模式。的工作方式和工作模式。 允許位尋址和字節(jié)尋址。其格式如下:允許位尋址和字節(jié)尋址。其格式如下: 6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器TF2 :定時器定時器/計數(shù)器計數(shù)器2的溢出中斷標(biāo)志位的溢出中斷標(biāo)志位 T2溢出時置位,申請中斷。軟件清零。溢出時置位,申請中斷。軟件清零。波特率發(fā)生器方

31、式波特率發(fā)生器方式下,下,RCLK1或或TCLK1時,定時器時,定時器溢出不對溢出不對TF2進(jìn)行置位進(jìn)行置位。EXF2(T2CON.6):):定時器定時器/計數(shù)器計數(shù)器2外部外部觸發(fā)標(biāo)志位觸發(fā)標(biāo)志位T2CON(C8H)D7D6D5D4D3D2D1D0TF2 EXF2 RCLK TCLK EXEN2 TR2C/T2 CP/RL2圖圖6-10 定時器定時器T2的控制寄存器的控制寄存器 6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器 EXEN21,且,且T2EX引腳上引腳上有負(fù)跳變有負(fù)跳變將觸發(fā)捕獲或重裝操作,將觸發(fā)捕獲或重裝操作,EXF2=1,向,向CPU發(fā)出中斷請求發(fā)

32、出中斷請求。 軟件復(fù)位。軟件復(fù)位。RCLK:串行口接收時鐘允許標(biāo)志位串行口接收時鐘允許標(biāo)志位RCLK=1時時,T2溢出信號分頻后做串行口溢出信號分頻后做串行口工作在模式工作在模式1和和3的接收波特率。的接收波特率。RCLK=0時時,T1溢出信號分頻信后做串行溢出信號分頻信后做串行口接收波特率??诮邮詹ㄌ芈?。6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器TCLK:串行口發(fā)送時鐘允許標(biāo)志位串行口發(fā)送時鐘允許標(biāo)志位TCLK=1時時,T2溢出信號分頻后做串行口溢出信號分頻后做串行口工做在模式工做在模式1和和3的發(fā)送波特率。的發(fā)送波特率。TCLK=0時時,T1溢出信號分頻后做

33、串行口溢出信號分頻后做串行口的發(fā)送波特率。的發(fā)送波特率。6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器 EXEN2 ( T2CON3 ) :定時器定時器/計數(shù)計數(shù)器器2外部允許標(biāo)志位外部允許標(biāo)志位EXEN2=1,定時器,定時器/計數(shù)器計數(shù)器2沒有工作在波沒有工作在波特率發(fā)生器方式,如特率發(fā)生器方式,如T2EX(P1.1)引腳上)引腳上產(chǎn)生負(fù)跳變時,將激活產(chǎn)生負(fù)跳變時,將激活“捕獲捕獲”或或“重裝重裝”操作。操作。 EXEN2=0,T2EX引腳上的電平變化對定引腳上的電平變化對定時器時器/計數(shù)器計數(shù)器2不起作用。不起作用。6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特

34、殊功能寄存器的特殊功能寄存器TR2 :定時器定時器/計數(shù)器計數(shù)器2啟動控制位啟動控制位TR2=1,啟動定時器,啟動定時器/計數(shù)器計數(shù)器2。TR2=0,停止定時器,停止定時器/計數(shù)器計數(shù)器2。C/T2:T2的定時器或計數(shù)器方式選擇位。的定時器或計數(shù)器方式選擇位。 C/T2=1,T2為計數(shù)器。為計數(shù)器。 對對T2(P1.0)引腳輸入脈沖進(jìn)行計數(shù)(引腳輸入脈沖進(jìn)行計數(shù)(下下降沿觸發(fā)降沿觸發(fā));當(dāng));當(dāng)T2(P1.0)產(chǎn)生負(fù)跳變時,產(chǎn)生負(fù)跳變時,計數(shù)器增計數(shù)器增1。 6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器C/T2=0, T2做定時器做定時器。每個機(jī)器周期每個機(jī)器周期

35、T2加加1。CP/RL2 :捕獲和重裝載方式選擇控制位捕獲和重裝載方式選擇控制位 捕獲方式:捕獲方式: CP/RL2=1,EXEN2=1,T2EX(P1.1)引)引腳負(fù)跳變將觸發(fā)捕獲操作。腳負(fù)跳變將觸發(fā)捕獲操作。 重裝載方式:重裝載方式:CP/RL2=0,EXEN2=1,T2EX引腳有負(fù)跳變引腳有負(fù)跳變或或T2計滿溢出時,觸發(fā)自動重裝操作。計滿溢出時,觸發(fā)自動重裝操作。6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器 RCLK=1或或TCLK=1時,時,定時器定時器/計數(shù)器計數(shù)器2做波做波特率發(fā)生器特率發(fā)生器。CP/RL2標(biāo)志位不起作用,當(dāng)標(biāo)志位不起作用,當(dāng)T2溢溢出

36、出時強(qiáng)制時強(qiáng)制自動裝載自動裝載。2、數(shù)據(jù)寄存器、數(shù)據(jù)寄存器TH2、TL28位的數(shù)據(jù)寄存器位的數(shù)據(jù)寄存器,組成,組成16位定時器位定時器/計數(shù)器。計數(shù)器。 字節(jié)尋址,地址分別為字節(jié)尋址,地址分別為CDH和和CCH。復(fù)位復(fù)位后,后,TH2=00H,TL2=00H。3、捕獲寄存器、捕獲寄存器RCAP2H和和RCAP2L6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器RCAP2H:高高8位捕獲寄存器位捕獲寄存器,字節(jié)地址,字節(jié)地址為為CBH。RCAP2L:低低8位捕獲寄存器位捕獲寄存器,字節(jié)地址,字節(jié)地址為為CAH。捕獲方式捕獲方式,保存當(dāng)前捕獲的計數(shù)值。,保存當(dāng)前捕獲的計數(shù)

37、值。重裝方式重裝方式,保存重裝初值。,保存重裝初值。復(fù)位后均為復(fù)位后均為00H。6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的特殊功能寄存器功能:功能:對定時器的加對定時器的加1減減1計數(shù)方式進(jìn)行設(shè)置。計數(shù)方式進(jìn)行設(shè)置。 選擇是否工作在可編程時鐘輸出方式。選擇是否工作在可編程時鐘輸出方式。復(fù)位后為復(fù)位后為00B。T2MOD(C9H)D7D6D5D4D3D2D1D0 T2OEDCEN 圖圖6-11 定時器定時器T2的模式控制寄存器的模式控制寄存器 4、定時器、定時器/計數(shù)器計數(shù)器2的模式控制寄存器的模式控制寄存器T2MOD6.3.1 定時器定時器/計數(shù)器計數(shù)器T2的特殊功能寄存器的

38、特殊功能寄存器T2MOD中標(biāo)志中標(biāo)志 :保留位,未定義,為:保留位,未定義,為未來功能擴(kuò)展用。未來功能擴(kuò)展用。T2OE:定時器:定時器/計數(shù)器計數(shù)器2輸出啟動位。輸出啟動位。T2OE1,工作在可編程時鐘輸出方式。,工作在可編程時鐘輸出方式。輸出方波信號至輸出方波信號至T2(P1.0)引腳。引腳。DCEN:定時器:定時器/計數(shù)器計數(shù)器2向上向上/向下計數(shù)控向下計數(shù)控制位。制位。當(dāng)當(dāng)DCENl,T2自動向下(遞減)計數(shù)自動向下(遞減)計數(shù)當(dāng)當(dāng)DCEN0, T2自動向上(遞增)計數(shù)自動向上(遞增)計數(shù) 6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式 定時器定時器/計數(shù)器計數(shù)器2是一個

39、是一個16位的加位的加1計數(shù)器,計數(shù)器,具有四種工作方式具有四種工作方式。如表。如表6-2所示:所示: 方式選擇寄存器:方式選擇寄存器:T2CON和和T2MOD。注意:無論注意:無論T2做定時器還是計數(shù)器,都具做定時器還是計數(shù)器,都具有捕獲和自動重裝的功能。有捕獲和自動重裝的功能。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式表表6-2定時器定時器/計數(shù)器計數(shù)器2的工作方式的工作方式RCLK+TCLKCP/RL2TR2T2OE工作方式工作方式001016位自動重裝方式位自動重裝方式0110捕獲方式捕獲方式1 10波特率發(fā)生器方式波特率發(fā)生器方式0 11時鐘輸出方式時鐘輸出方式

40、0 關(guān)閉關(guān)閉T26.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式一、一、16位自動重裝方式位自動重裝方式CPRL20,DCEN=0時,選擇時,選擇自動重自動重裝裝方式。結(jié)構(gòu)如下圖所示:方式。結(jié)構(gòu)如下圖所示:T2計滿溢出時,計滿溢出時, TF2置置1,申請中斷。,申請中斷。打打開重裝載三態(tài)緩沖器,將開重裝載三態(tài)緩沖器,將RCAP2H和和RCAP2L的內(nèi)容自動裝載到的內(nèi)容自動裝載到TH2和和TL2中。中。EXEN21且且T2EX(P11)端的信號有)端的信號有負(fù)跳變時,負(fù)跳變時, EXF2置置1,申請中斷,申請中斷。引起重裝。引起重裝載操作。載操作。6.3.2 定時器定時器/計數(shù)器計

41、數(shù)器T2的工作方式的工作方式RCAPLRCAPHTF2TL 2TH 2EXF2EXEN2T2(P1.0)T2EX(P1.1)溢出溢出T2中斷請求中斷請求TR2振蕩器振蕩器12C/T2=0C/T2=1+6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式CP/RL20,DCEN=1時,定時器時,定時器/計數(shù)器計數(shù)器2既可以既可以增量(加增量(加1)和)和減量(減量(減減1)計數(shù)。)計數(shù)。T2EX電平控制計數(shù)方向:電平控制計數(shù)方向: 當(dāng)當(dāng)T2EX(P1.1)引腳輸入為高電平)引腳輸入為高電平1時時,T2執(zhí)行增量(加執(zhí)行增量(加1)計數(shù))計數(shù)。 增量計數(shù)過程:增量計數(shù)過程:計滿溢出時,一方

42、面置位計滿溢出時,一方面置位TF2,向主機(jī)請求中斷處理;另一方面將存放,向主機(jī)請求中斷處理;另一方面將存放在寄存器在寄存器RCAP2L和和RCAP2H中的中的16位計數(shù)初位計數(shù)初值自動重裝值自動重裝TL2和和TH2中,進(jìn)行新一輪加中,進(jìn)行新一輪加1計數(shù)。計數(shù)。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式T2EX(P1.1)引腳為低電平)引腳為低電平0時,定時器時,定時器/計數(shù)器計數(shù)器2執(zhí)行減量(減執(zhí)行減量(減1)計數(shù)。)計數(shù)。減量計數(shù)過程:減量計數(shù)過程:是用是用FFH分別初始化(預(yù)分別初始化(預(yù)置)置)TL2和和T

43、H2,用,用0FFFFH減去計數(shù)次數(shù)減去計數(shù)次數(shù)所求得的下限初始化所求得的下限初始化RCAP2L和和RCAP2H。計數(shù)器不斷減計數(shù)器不斷減1,直至計數(shù)器中的值等于寄,直至計數(shù)器中的值等于寄存器存器RCAP2L和和RCAP2H中預(yù)置的值時,計中預(yù)置的值時,計滿溢出。滿溢出。 0FFH重裝重裝TL2和和TH2,進(jìn)行新一,進(jìn)行新一輪的計數(shù)操作輪的計數(shù)操作6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式增量(加增量(加1)計數(shù)是以)計數(shù)是以65536為模。為模。對計數(shù)對計數(shù)次數(shù)求補(bǔ)得到計數(shù)初值,此初值初始化次數(shù)求補(bǔ)得到計數(shù)初值,此初值初始化TL2、TH2和和RCAP2L、RCAP2H陷阱

44、寄存器。陷阱寄存器。在電平控制重裝方式下,無論減量增量計在電平控制重裝方式下,無論減量增量計數(shù),溢出時數(shù),溢出時TF2置置1,EXF2狀態(tài)翻轉(zhuǎn),相當(dāng)狀態(tài)翻轉(zhuǎn),相當(dāng)于于17位計數(shù)器的最高位。位計數(shù)器的最高位。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式二、捕獲方式二、捕獲方式 當(dāng)當(dāng)CPRL2l,選擇捕獲方式。,選擇捕獲方式。存在以下兩存在以下兩種情況。種情況。T2結(jié)構(gòu)如下圖所示,有兩種情況:結(jié)構(gòu)如下圖所示,有兩種情況:EXEN=0 定時器定時器2的計數(shù)溢出,置位的計數(shù)溢出,置位TF2,申請中斷。,申請中斷。 EXEN21 T2EX(P11)端的信號有負(fù)跳變時,觸)端的信號有負(fù)跳

45、變時,觸發(fā)捕獲操作。發(fā)捕獲操作。將將TH2和和TL2的內(nèi)容自動捕獲到寄的內(nèi)容自動捕獲到寄存器存器RCAP2H和和RCAP2L中同時中同時EXF2置置1,申,申請中斷。請中斷。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式 圖圖6-14 捕獲方式的邏輯結(jié)構(gòu)圖捕獲方式的邏輯結(jié)構(gòu)圖6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式三、波特率發(fā)生器方式三、波特率發(fā)生器方式 RCLK=1或或TCLK 1時時,選擇,選擇波特率發(fā)生波特率發(fā)生器方式器方式。結(jié)構(gòu)如下圖所示,從圖可以看出:。結(jié)構(gòu)如下圖所示,從圖可以看出:RCLK=1,T2為為接收波特率發(fā)生器。接收波特率發(fā)生器。 TC

46、LK=1,T2為為發(fā)送波特率發(fā)生器發(fā)送波特率發(fā)生器。 C/T20,選用內(nèi)部脈沖,選用內(nèi)部脈沖。 C/T21,選用外部脈沖,選用外部脈沖。 T2(P1.0)輸入負(fù)跳變時,計數(shù)值增)輸入負(fù)跳變時,計數(shù)值增l。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式計數(shù)溢出時,觸發(fā)自動裝載操作。計數(shù)溢出時,觸發(fā)自動裝載操作。 RCAP2H和和RCAP2L的內(nèi)容自動裝載到的內(nèi)容自動裝載到TH2和和TL2中。中。T2用做波特率發(fā)生器時,用做波特率發(fā)生器時,TH2的溢出不會的溢出不會將將TF2置位,不產(chǎn)生中斷請求置位,不產(chǎn)生中斷請求。T2

47、EX還可以作為一個附加的外部中斷源還可以作為一個附加的外部中斷源。 T2用做波特率發(fā)生器時,若用做波特率發(fā)生器時,若EXEN2=1,當(dāng)當(dāng)T2EX有負(fù)跳變時,有負(fù)跳變時,EXF2置置1,由于不發(fā),由于不發(fā)生重裝載或捕獲操作,此時生重裝載或捕獲操作,此時T2EX引腳可外引腳可外接一中斷源。接一中斷源。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式定時器定時器/計數(shù)器計數(shù)器T2作為波特率發(fā)生器使用時的作為波特率發(fā)生器使用時的編程方法如下:編程方法如下:RCAP2H=0 x30;/設(shè)置波特率設(shè)置波特率RCAP2L=0 x38;TCLK=1;/選擇定時器選擇定時器2的溢出脈沖的溢出脈沖作

48、為波特率發(fā)生器作為波特率發(fā)生器 注意:在波特率發(fā)生器工作方式下,在注意:在波特率發(fā)生器工作方式下,在 T2計數(shù)過程中不能再讀計數(shù)過程中不能再讀/寫寫 TH2和和TL2的內(nèi)容。的內(nèi)容。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式四、可編程時鐘輸出方式四、可編程時鐘輸出方式 T2OE=1時,時,C/T2=0時,時,T2工作于工作于時鐘輸時鐘輸出方式出方式。結(jié)構(gòu)如下圖所示:。結(jié)構(gòu)如下圖所示: 工作過程:工作過程:當(dāng)當(dāng)T2計滿溢出時,計滿溢出時,T2(P1.0)引腳狀態(tài)翻轉(zhuǎn),從而輸出頻率可調(diào)、精度很引腳狀態(tài)翻轉(zhuǎn),從而輸出頻率可調(diào)、精度很高的方波信號;同時使高的方波信號;同時使RCAP

49、2H和和RCAP2L寄存器內(nèi)容裝入寄存器內(nèi)容裝入TH2和和TL2寄存器中,重新計寄存器中,重新計數(shù)。數(shù)。在時鐘輸出方式下,在時鐘輸出方式下,T2溢出時不置位溢出時不置位TF2。6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式當(dāng)當(dāng)EXEN2=1,T2EX(P1.1)引腳有引腳有負(fù)跳變負(fù)跳變時,時,EXF2將置將置1。(。(同波特率發(fā)生器方式同波特率發(fā)生器方式)從從P1.0引腳輸出的時鐘信號頻率為:引腳輸出的時鐘信號頻率為:Fosc/(4(65536-(RCAP2H,RCAP2L)6.3.2 定時器定時器/計數(shù)器計數(shù)器T2的工作方式的工作方式圖圖6-16 T2時鐘輸出方式下的邏輯結(jié)構(gòu)

50、圖時鐘輸出方式下的邏輯結(jié)構(gòu)圖6.4 定時器應(yīng)用舉例定時器應(yīng)用舉例主要內(nèi)容主要內(nèi)容6.4.1 定時器的初始化定時器的初始化6.4.2 定時器應(yīng)用舉例定時器應(yīng)用舉例6.4.1 定時器的初始化定時器的初始化 在使用定時器在使用定時器/計數(shù)器前,應(yīng)首先對其進(jìn)行初始化計數(shù)器前,應(yīng)首先對其進(jìn)行初始化編程。編程。一、定時器的初始化步驟一、定時器的初始化步驟1、選擇工作模式和工作方式。選擇工作模式和工作方式。 設(shè)置設(shè)置TMOD、T2MOD。2、設(shè)置定時器的計數(shù)初值、設(shè)置定時器的計數(shù)初值。 設(shè)置設(shè)置THx和和TLx,RCAP2H和和RCAP2L。3、中斷設(shè)置:、中斷設(shè)置:設(shè)置設(shè)置IE。4、啟動定時器、啟動定時器

51、。 設(shè)置設(shè)置TCON或或T2CON。 可以使用位操作指令。例如:可以使用位操作指令。例如:SETB TRx。6.4.1 定時器的初始化定時器的初始化二、定時器二、定時器/計數(shù)器初值計算計數(shù)器初值計算 根據(jù)根據(jù)定時器定時器/計數(shù)器的模式和方式,計算計數(shù)計數(shù)器的模式和方式,計算計數(shù)初值初值(注意(注意T2)計數(shù)器的長度為計數(shù)器的長度為n,則計數(shù)的最大值為,則計數(shù)的最大值為2n 。1、工作于定時方式、工作于定時方式計數(shù)脈沖由內(nèi)部的時鐘提供,每個機(jī)器周期計數(shù)脈沖由內(nèi)部的時鐘提供,每個機(jī)器周期進(jìn)行加進(jìn)行加1。設(shè)晶振頻率為設(shè)晶振頻率為fosc,則計數(shù)脈沖的頻率為,則計數(shù)脈沖的頻率為fosc/12,計數(shù)脈沖

52、周期,計數(shù)脈沖周期T=1/(fosc/12)。)。6.4.1 定時器的初始化定時器的初始化如果進(jìn)行定時時間為如果進(jìn)行定時時間為t,計數(shù)初值為,計數(shù)初值為X,則:,則:t=( 2n -X)12/fosc2、工作于計數(shù)方式、工作于計數(shù)方式 當(dāng)工作在計數(shù)方式時,對外部脈沖計數(shù)。當(dāng)工作在計數(shù)方式時,對外部脈沖計數(shù)。利用計數(shù)器計數(shù)結(jié)束產(chǎn)生溢出的特性,來計利用計數(shù)器計數(shù)結(jié)束產(chǎn)生溢出的特性,來計算初值算初值X 。則有:。則有:X= 2n計數(shù)次數(shù)計數(shù)次數(shù)6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例例例6-3 利用定時器利用定時器T1的模式的模式2對外部信號進(jìn)行對外部信號進(jìn)行計數(shù),要求每計滿計數(shù),要求每計滿10

53、0次,將次,將P1.0端取反。端取反。分析:分析:T1工作在計數(shù)方式。脈沖數(shù)工作在計數(shù)方式。脈沖數(shù)100。模式模式2,模式字,模式字TMOD=0110b。1、初值計數(shù):、初值計數(shù):在模式在模式2下:下:X= 28-100=156D=9CH2、C語言程序:語言程序:#include sbit p1_0=p10;/進(jìn)行位定義進(jìn)行位定義6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例void main ( )TMOD=0 x60;/T1工作在模式工作在模式2,計數(shù),計數(shù)TL1=0 x9c;/裝入計數(shù)(重裝)初值裝入計數(shù)(重裝)初值TH1=0 x9c;ET1=1;/允許定時器允許定時器1中斷中斷EA=1;

54、/開中斷開中斷TR1=1 ;/啟動定時器啟動定時器1while(1);6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例void time0_int(void) interrupt 3 /中斷服務(wù)程序中斷服務(wù)程序P1_0=P1_0;/取反,產(chǎn)生方波取反,產(chǎn)生方波3、匯編語言程序:、匯編語言程序:MAIN: MOV TMOD,#60H;T1工作在模式工作在模式2,計數(shù),計數(shù)MOVTL1,#9CH;裝入計數(shù)初值裝入計數(shù)初值MOVTH1, #9CH;裝入計數(shù)(重裝)初值裝入計數(shù)(重裝)初值6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例MOVIE,#88H;允許定時器中斷允許定時器中斷SETBTR1;啟動定時

55、器啟動定時器HERE:SJMP HERE;等待中斷等待中斷中斷服務(wù)程序中斷服務(wù)程序:ORG 001BH;中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址CPLP1.0;對對P1.0引腳信號取反引腳信號取反RETI;中斷返回中斷返回6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例 例例6-4 某一應(yīng)用系統(tǒng)需要對某一應(yīng)用系統(tǒng)需要對INT0引腳的正脈引腳的正脈沖測試其脈沖寬度。沖測試其脈沖寬度。分析:分析:可以設(shè)置定時器可以設(shè)置定時器/計數(shù)器計數(shù)器0為定時方式,為定時方式,工作在模式工作在模式1,且置位,且置位GATE位為位為1,將外部需測,將外部需測試的脈沖從試的脈沖從INT0引腳輸入,設(shè)機(jī)器周期為引腳輸入,

56、設(shè)機(jī)器周期為1s。6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例C語言程序:語言程序:計算脈寬和處理程序略。計算脈寬和處理程序略。#include sbit P3_2=P32;unsigned int_test( )TMOD=0 x09;TL0=0 x00;TH0=0 x00;while(P3_2);TR0=1;6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例while(!P3_2);while(P3_2);TR0= 0;return (TH0*256+TL0);匯編語言程序匯編語言程序:INT00:MOV TMOD,#09H MOV TL0,#00H;設(shè)置計數(shù)初值設(shè)置計數(shù)初值MOV TH0,#00

57、HLOP1:JBP3.2,LOP1;等待等待P3.2變低電平變低電平6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例 SETB TR0;啟動啟動T0計數(shù)計數(shù)LOP2:JNB P3.2,LOP2 ;等待等待P3.2變成高電平變成高電平LOP3:JBP3.2,LOP3 ;等待等待P3.2變成低電平變成低電平 CLR TR0;停止停止T0計數(shù)計數(shù)MOV A,TL0;計數(shù)器計數(shù)器TL0中的內(nèi)容送中的內(nèi)容送AMOV B,TH0;計數(shù)器計數(shù)器TH0中的內(nèi)容送中的內(nèi)容送B 本題也可以使用本題也可以使用定時器定時器/計數(shù)器計數(shù)器2工作在工作在捕獲捕獲方式下方式下進(jìn)行脈寬測試。進(jìn)行脈寬測試。 注意:注意:T2脈寬測

58、試必須在定時器未溢出的情脈寬測試必須在定時器未溢出的情況下才有效。況下才有效。 6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例例例6-5 某應(yīng)用系統(tǒng)要求通過某應(yīng)用系統(tǒng)要求通過P1.0和和P1.1口口分別輸出脈沖周期為分別輸出脈沖周期為200s和和400s的方波,的方波,fosc=6MHz。 分析:分析:需要兩個定時器需要兩個定時器??梢赃x擇使用定??梢赃x擇使用定時器時器/計數(shù)器計數(shù)器0,設(shè)置為定時模式,設(shè)置為定時模式,工作模式工作模式3,分成兩個分成兩個8位的定時器。位的定時器。1、計算定時初值。、計算定時初值。t=(256 -X)12/fosc初值分別為初值分別為0CEH和和9CH。6.4.2

59、 定時器的應(yīng)用舉例定時器的應(yīng)用舉例2、C語言程序:語言程序:# include sbitP1_0=P10;/進(jìn)行位定義進(jìn)行位定義sbitP1_1=P11;void main( )TMOD=0 x03;/設(shè)置設(shè)置T0定時,工作在模式定時,工作在模式3TL0=0 xce;/設(shè)置設(shè)置TL0計數(shù)初值,產(chǎn)生計數(shù)初值,產(chǎn)生 200s方波方波TH0=0 x9c;/設(shè)置設(shè)置TH0計數(shù)初值,產(chǎn)生計數(shù)初值,產(chǎn)生 400s方波方波ET0=1;/設(shè)置定時器設(shè)置定時器0中斷允許位中斷允許位6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例ET1=1;/設(shè)置定時器設(shè)置定時器/計數(shù)計數(shù)/器器1中斷允許位中斷允許位EA=1;/設(shè)置

60、總中斷允許位設(shè)置總中斷允許位TR0=1;/啟動定時器啟動定時器T0TR1=1;/啟動定時器啟動定時器T1while(1); /等待溢出等待溢出void time0L_int(void) interrupt 1/T0中斷服務(wù)程序中斷服務(wù)程序TL0=0 xce;/定時器重賦初值定時器重賦初值P1_0=P1_0;/產(chǎn)生方波產(chǎn)生方波6.4.2 定時器的應(yīng)用舉例定時器的應(yīng)用舉例void time0H_int(void) interrupt 3 /T1中斷服務(wù)程序中斷服務(wù)程序TH0=0 x9c;/定時器重賦初值定時器重賦初值P1_1=P1_1;/產(chǎn)生方波產(chǎn)生方波3、匯編語言程序:、匯編語言程序:主程序:主

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論