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

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)C語(yǔ)言編程定時(shí)器計(jì)數(shù)器單片機(jī)C語(yǔ)言編程定時(shí)器計(jì)數(shù)器 本章主要討論本章主要討論MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)計(jì)數(shù)器的邏輯結(jié)構(gòu)和工作原理。內(nèi)容主要有數(shù)器的邏輯結(jié)構(gòu)和工作原理。內(nèi)容主要有MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器T0、T1、T2的邏輯結(jié)的邏輯結(jié)構(gòu),工作方式的選擇和應(yīng)用。構(gòu),工作方式的選擇和應(yīng)用。 本章為單片機(jī)的主要內(nèi)容,也是第七章本章為單片機(jī)的主要內(nèi)容,也是第七章串行口的學(xué)習(xí)的基礎(chǔ)。串行口的學(xué)習(xí)的基礎(chǔ)。第6章 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器6.1 MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)計(jì)數(shù)器的結(jié)構(gòu)及原理構(gòu)及原理主要內(nèi)容主要內(nèi)容6.1.1 MCS-51單片機(jī)定時(shí)

2、器的結(jié)構(gòu)單片機(jī)定時(shí)器的結(jié)構(gòu)6.1.2 MCS-51單片機(jī)定時(shí)器的工作原理單片機(jī)定時(shí)器的工作原理6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的控制寄存器計(jì)數(shù)器的控制寄存器6.1.1 MCS-51單片機(jī)定時(shí)器的結(jié)構(gòu)單片機(jī)定時(shí)器的結(jié)構(gòu) MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器邏輯結(jié)構(gòu)圖:計(jì)數(shù)器邏輯結(jié)構(gòu)圖: CPU中斷溢出溢出溢出定時(shí)器 0定時(shí)器 1定時(shí)器 2TMODT2CONT2MODTCONTH 0TL 0TH 1TL 1TH 2TL 2RCAP 2LRCAP 2H模式模式T2(P1.0)T1(P3.5)T2EX(P1.1)T0(P3.4)模式控制控制控制中斷重裝捕獲6.1.1 MCS-51單片機(jī)定時(shí)器的

3、結(jié)構(gòu)單片機(jī)定時(shí)器的結(jié)構(gòu) MCS-51主要由如下構(gòu)成:主要由如下構(gòu)成:三個(gè)三個(gè)16位的可編程定時(shí)器位的可編程定時(shí)器/計(jì)數(shù)器:定時(shí)計(jì)數(shù)器:定時(shí)器器/計(jì)數(shù)器計(jì)數(shù)器0、1和和2。每個(gè)定時(shí)器有兩部分構(gòu)成:每個(gè)定時(shí)器有兩部分構(gòu)成:THx和和TLx特殊功能寄存器特殊功能寄存器T2MOD和和T2CON ,主,主要對(duì)要對(duì)T2進(jìn)行控制。進(jìn)行控制。 特殊功能寄存器特殊功能寄存器TMOD和和TCON ,主要,主要對(duì)對(duì)T0和和T1進(jìn)行控制。進(jìn)行控制。6.1.1 MCS-51單片機(jī)定時(shí)器的結(jié)構(gòu)單片機(jī)定時(shí)器的結(jié)構(gòu) 引腳、,輸入計(jì)數(shù)脈沖。引腳、,輸入計(jì)數(shù)脈沖。 定時(shí)器定時(shí)器T0、T1和和T2是是3個(gè)中斷源,可以向個(gè)中斷源,可

4、以向CPU 發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2增加了兩個(gè)增加了兩個(gè)8位的寄存器:位的寄存器:RCAP2H和和RCAP2L。 特殊功能寄存器之間通過(guò)內(nèi)部總線和控制特殊功能寄存器之間通過(guò)內(nèi)部總線和控制邏輯電路連接起來(lái)。邏輯電路連接起來(lái)。 6.1.2 MCS-51單片機(jī)定時(shí)器的工作原理單片機(jī)定時(shí)器的工作原理 定時(shí)器/計(jì)數(shù)器T0、T1、T2 的內(nèi)部結(jié)構(gòu)簡(jiǎn)圖如下圖所示。C/T=0中斷請(qǐng)求振蕩器TLx(8位)THx(8位)Tx12分頻TFxC/T=1控制TRx6.1.2 MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的工作原理計(jì)數(shù)器的工作原理 從上圖可以看出: 定時(shí)器的實(shí)質(zhì)是一個(gè)加

5、1計(jì)數(shù)器。C/T =0 ,為定時(shí)器方式。計(jì)數(shù)信號(hào)由片內(nèi)振蕩電路提供,振蕩脈沖12分頻送給計(jì)數(shù)器,每個(gè)機(jī)器周期計(jì)數(shù)器值增1。 例如:如果晶振頻率為12MHz,則最高計(jì)數(shù)頻率為6.1.2 MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的工作原理計(jì)數(shù)器的工作原理 C/T =1 ,為計(jì)數(shù)方式。計(jì)數(shù)信號(hào)由Tx引腳、和P1.0)輸入,每輸入一有效信號(hào),相應(yīng)的計(jì)數(shù)器中的內(nèi)容進(jìn)行加1??刂菩盘?hào)TRx=1時(shí),定時(shí)器啟動(dòng)。 當(dāng)定時(shí)器由全1加到全0時(shí)計(jì)滿(mǎn)溢出,從0開(kāi)始繼續(xù)計(jì)數(shù),TFx=1 ,向CPU申請(qǐng)中斷。6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的方式和控制寄存器計(jì)數(shù)器的方式和控制寄存器1、T0、T1 工作模式寄存器工作模

6、式寄存器TMOD 功能:確定定時(shí)器的工作模式。功能:確定定時(shí)器的工作模式。其格式如圖其格式如圖6-3所示:所示:TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0圖6-3 定時(shí)器方式寄存器TMOD GATE外部門(mén)控制位。GATE1,使用外部控制門(mén)。 TRx=1, 講義=1時(shí),啟動(dòng)定時(shí)器。6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的方式和控制寄存器計(jì)數(shù)器的方式和控制寄存器GATE0,不使用外部門(mén)控制計(jì)數(shù)器 C/T定時(shí)或計(jì)數(shù)方式選擇位 。C/T0時(shí),為定時(shí)器C/T1時(shí),為計(jì)數(shù)器 采樣過(guò)程:CPU在每機(jī)器周期S5P2期間,輸入信號(hào)進(jìn)行采樣。若前一機(jī)器周期采樣值為1,

7、下一機(jī)器周期采樣值為0,則計(jì)數(shù)器增1,隨后的機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的方式和控制寄存器計(jì)數(shù)器的方式和控制寄存器 M1、M0工作模式選擇位。工作模式選擇位。如下表所示如下表所示:表6-1 定時(shí)器/計(jì)數(shù)器的工作模式M1M0工作模式功 能00模式013位定時(shí)器/計(jì)數(shù)器 01模式116位定時(shí)器/計(jì)數(shù)器10模式28位自動(dòng)重置定時(shí)器/計(jì)數(shù)器11模式3定時(shí)器0:TL0為8位定時(shí)器/計(jì)數(shù)器,TH0為8位定時(shí)器。定時(shí)器1:無(wú)此方式6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的方式和控制寄存器計(jì)數(shù)器的方式和控制寄存器2、T0、T1的控制寄存器的控制寄存器TCONTCON(8

8、8H)D7D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1IT1IE0IT0圖6-4 定時(shí)器的控制寄存器 TF1、TF0:T1、T0的溢出標(biāo)志位 計(jì)數(shù)溢出,TFx=1。 中斷方式:自動(dòng)清零; 查詢(xún)方式:軟件清零。6.1.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的方式和控制寄存器計(jì)數(shù)器的方式和控制寄存器TR1、TR0:T1、T0啟??刂莆?。啟??刂莆?。 置置1,啟動(dòng)定時(shí)器;,啟動(dòng)定時(shí)器; 清清0,關(guān)閉定時(shí)器。,關(guān)閉定時(shí)器。IE1、IE0:外部中斷:外部中斷1、0請(qǐng)求標(biāo)志位請(qǐng)求標(biāo)志位IT1、IT0:外部中斷:外部中斷1、0觸發(fā)方式選擇位觸發(fā)方式選擇位注意:注意: GATE=1 ,TRx與講義與講

9、義 的配合。的配合。6.2 定時(shí)器定時(shí)器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所所示。(以示。(以T0為例)為例) T0的結(jié)構(gòu):的結(jié)構(gòu):13位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 由由TH0的的8位、位、TL0的低的低5位構(gòu)成位構(gòu)成(高高3位未

10、用位未用) 工作過(guò)程:工作過(guò)程:TL0溢出后向溢出后向TH0進(jìn)位,進(jìn)位,TH0溢出后溢出后將將TF0置位,并向置位,并向CPU申請(qǐng)中斷。申請(qǐng)中斷。 定時(shí)時(shí)間定時(shí)時(shí)間=(213-定時(shí)初值)機(jī)器周期定時(shí)初值)機(jī)器周期 最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:213機(jī)器周期機(jī)器周期6.2.1 模式模式0的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用C/T=1,計(jì)數(shù)方式。計(jì)數(shù)脈沖由引腳輸入。,計(jì)數(shù)方式。計(jì)數(shù)脈沖由引腳輸入。C/T=0時(shí),定時(shí)方式。時(shí),定時(shí)方式。圖6-5 模式0的邏輯結(jié)構(gòu)圖6.2.2 模式模式1的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 M1M001時(shí),選擇模式時(shí),選擇模式1。邏輯結(jié)構(gòu)如下。邏輯結(jié)構(gòu)如下頁(yè)圖所示。頁(yè)圖所示。

11、 T0的結(jié)構(gòu):的結(jié)構(gòu):16位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 TL0:存放計(jì)數(shù)初值的低:存放計(jì)數(shù)初值的低8位。位。 TH0存放計(jì)數(shù)初值的高存放計(jì)數(shù)初值的高8位;位;定時(shí)時(shí)間定時(shí)時(shí)間=(216-定時(shí)初值定時(shí)初值)機(jī)器周期機(jī)器周期最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:216機(jī)器周期機(jī)器周期6.2.2 模式模式1的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 工作過(guò)程:當(dāng)工作過(guò)程:當(dāng)TL0計(jì)滿(mǎn)時(shí),向計(jì)滿(mǎn)時(shí),向TH0進(jìn)進(jìn)1;當(dāng);當(dāng)TH0計(jì)滿(mǎn)計(jì)滿(mǎn)時(shí),溢出使時(shí),溢出使TF0=1,向,向CPU申請(qǐng)中斷。申請(qǐng)中斷。 MCS-51單片機(jī)之所以設(shè)置幾乎完全一單片機(jī)之所以設(shè)置幾乎完全一 樣樣 的方式的方式0和方和方式式1,是出于與,是出于

12、與 MCS-48單片機(jī)兼容的。單片機(jī)兼容的。6.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 M1 M0 10時(shí),選擇模式時(shí),選擇模式2。邏輯結(jié)構(gòu)。邏輯結(jié)構(gòu)如圖如圖6-7所示。所示。 T0的結(jié)構(gòu):的結(jié)構(gòu): TL0:8位的定時(shí)器位的定時(shí)器/計(jì)數(shù)器;計(jì)數(shù)器; TH0:8位預(yù)置寄存器,用于保存初值。位預(yù)置寄存器,用于保存初值。 工作過(guò)程:當(dāng)工作過(guò)程:當(dāng)TL0計(jì)滿(mǎn)溢出時(shí),計(jì)滿(mǎn)溢出時(shí),TF0置置1,向向CPU發(fā)出中斷請(qǐng)求;同時(shí)引起重裝操作發(fā)出中斷請(qǐng)求;同時(shí)引起重裝操作(TH0的計(jì)數(shù)初值送到的計(jì)數(shù)初值送到TL0),進(jìn)行新一輪),進(jìn)行新一輪計(jì)數(shù)。計(jì)數(shù)。6.2.3 模式模式2的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及

13、應(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)用 定時(shí)時(shí)間定時(shí)時(shí)間=(28 - 初值初值)機(jī)器周期機(jī)器周期 最大定時(shí)時(shí)間最大定時(shí)時(shí)間=28 機(jī)器周期機(jī)器周期優(yōu)點(diǎn):模式優(yōu)點(diǎn):模式2能夠進(jìn)行自動(dòng)重裝載。模式能夠進(jìn)行自動(dòng)重裝載。模式0和和1計(jì)數(shù)溢出后,計(jì)數(shù)器為全計(jì)數(shù)溢出后,計(jì)數(shù)器為全0。循環(huán)定時(shí)或。循環(huán)定時(shí)或計(jì)數(shù)時(shí),需要重新設(shè)置初值。計(jì)數(shù)時(shí),需要重新設(shè)置初值。說(shuō)明:在模式說(shuō)明:在模式2能夠滿(mǎn)足計(jì)數(shù)或定時(shí)要求時(shí),能夠滿(mǎn)足計(jì)數(shù)或定時(shí)要求時(shí)

14、,盡可能使用模式盡可能使用模式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分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器 TL0: 8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器使用使用T0所有的資源和控制位所有的資源和控制位 TH0:8位定時(shí)器位定時(shí)器使用使用T1所有的資源所有的資源(中斷向量、中斷控制中斷向量、中斷控制ET1、PT1)和控制位和控制位(TR1、TF1)6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用圖圖6-

15、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時(shí)時(shí)T1的工作模式的工作模式T1可以模式可以模式0模式模式2工作。工作。T1的結(jié)構(gòu)如圖的結(jié)構(gòu)如圖6-9所示所示由于由于TF1及中斷矢量被及中斷矢量被TH0占用,所以占用,所以T1僅用作波特率發(fā)生器或其它不用中斷的地方。僅用作波特率發(fā)生器或其它不用中斷的地方。T1作波特率發(fā)生器,其計(jì)數(shù)溢出直接送作波特率發(fā)生器,其計(jì)數(shù)溢出直接送至串行口。設(shè)置好工作方式,串行口波特率至串行口。設(shè)置好工作方式,串行口波特率發(fā)生器開(kāi)始自動(dòng)運(yùn)行。發(fā)生器開(kāi)始自動(dòng)運(yùn)行。 TMOD中中T1的的M1M0=11,T

16、1停止工作。停止工作。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è)置?串行口重新裝入C/T=1C/T=0T1(P3.5)振蕩器12分頻TL1(8位)TH1(8位)6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用1、定時(shí)器、定時(shí)器/計(jì)數(shù)器工作模式的選擇方法計(jì)數(shù)器工作模式的選擇方法(1)首先計(jì)算計(jì)數(shù)值)首先計(jì)算計(jì)數(shù)值N(2)確定工作模式)確定工作模式原則是盡可能地選擇模式原則是盡可能地選擇模式2若若 N 256選擇模式選擇模式2,否則選擇模式,否則選擇模式1(3)如果需要增加一個(gè)定時(shí)

17、器)如果需要增加一個(gè)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器選擇模式選擇模式3。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用2、定時(shí)器、定時(shí)器/計(jì)數(shù)器初值計(jì)數(shù)器初值X的計(jì)算方法的計(jì)算方法因?yàn)橐驗(yàn)閄 + N = 28或或216所以所以X = 28或或216-N(1)對(duì)定時(shí)器)對(duì)定時(shí)器設(shè)定時(shí)時(shí)間為設(shè)定時(shí)時(shí)間為tN = t/機(jī)器周期機(jī)器周期所以所以X = 28或或216- t/機(jī)器周期機(jī)器周期(2)對(duì)計(jì)數(shù)器)對(duì)計(jì)數(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í)器/計(jì)數(shù)器計(jì)數(shù)器0的模式的模式1編

18、程,在引腳產(chǎn)生一編程,在引腳產(chǎn)生一個(gè)周期為個(gè)周期為1000s的方波,定時(shí)器的方波,定時(shí)器T0采用中斷采用中斷的處理方式。的處理方式。定時(shí)器的分析過(guò)程。定時(shí)器的分析過(guò)程。工作方式選擇工作方式選擇 需要產(chǎn)生周期信號(hào)時(shí),選擇定時(shí)方式。定需要產(chǎn)生周期信號(hào)時(shí),選擇定時(shí)方式。定時(shí)時(shí)間到了對(duì)輸出端進(jìn)行周期性的輸出即可。時(shí)時(shí)間到了對(duì)輸出端進(jìn)行周期性的輸出即可。 工作模式選擇工作模式選擇 根據(jù)定時(shí)時(shí)間長(zhǎng)短選擇工作模式。根據(jù)定時(shí)時(shí)間長(zhǎng)短選擇工作模式。 首選模式首選模式2,可以省略重裝初值操作。,可以省略重裝初值操作。6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 定時(shí)時(shí)間計(jì)算:周期為定時(shí)時(shí)間計(jì)算:周期為1

19、000s的方波要的方波要求定時(shí)器的定時(shí)時(shí)間為求定時(shí)器的定時(shí)時(shí)間為500s,每次溢出時(shí),每次溢出時(shí),將引腳的輸出取反,就可以在上產(chǎn)生所需將引腳的輸出取反,就可以在上產(chǎn)生所需要的方波。要的方波。 定時(shí)初值計(jì)算:定時(shí)初值計(jì)算: 振蕩頻率為振蕩頻率為12MHz,則機(jī)器周期為,則機(jī)器周期為1s。 設(shè)定時(shí)初值為設(shè)定時(shí)初值為X,(65536-X)1s=500s X=65036=0FE0CH定時(shí)器的初值為:定時(shí)器的初值為:TH0=0FEH,TL0=0CH 6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用C語(yǔ)言程序:語(yǔ)言程序:#include /包含特殊功能寄存器庫(kù)包含特殊功能寄存器庫(kù)sbit P1_0=

20、P10; /進(jìn)行位定義進(jìn)行位定義void main( ) TMOD=0 x01; /T0做定時(shí)器,模式做定時(shí)器,模式1TL0=0 x0c;TH0=0 xfe;/設(shè)置定時(shí)器的初值設(shè)置定時(shí)器的初值ET0=1; /允許允許T0中斷中斷 EA=1; /允許允許CPU中斷中斷TR0=1; /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器while(1); /等待中斷等待中斷 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;/定時(shí)器重賦初值定時(shí)器重賦初值取反,輸出方波取反,輸出方波匯編語(yǔ)言程序匯編

21、語(yǔ)言程序:ORG0000HSJMP MAINORG000BHLJMPTIME06.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用MAIN:MOV TMOD,#01H ;T0定時(shí),模式定時(shí),模式1MOVTL0,#0CH;置定時(shí)初值;置定時(shí)初值MOVTH0,#0FEH SETBET0;定時(shí)器;定時(shí)器T0開(kāi)中斷開(kāi)中斷SETBEA;CPU開(kāi)中斷開(kāi)中斷SETBTR0;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器T0SJMP $;等待定時(shí)器溢出;等待定時(shí)器溢出TIME0: ;中斷服務(wù)程序中斷服務(wù)程序MOV TL0,#0CHMOVTH0,#0FEH ;重裝定時(shí)初值;重裝定時(shí)初值CPLP1.0 ;取反;取反RETI ;中斷返回

22、;中斷返回END6.2.4 模式模式 3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用 例例6-2 設(shè)單片機(jī)的振蕩頻率為設(shè)單片機(jī)的振蕩頻率為12MHz,用定時(shí)器用定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0編程實(shí)現(xiàn)從輸出周期為編程實(shí)現(xiàn)從輸出周期為500s的方波。的方波。分析:方法同例分析:方法同例6-1定時(shí)時(shí)間:定時(shí)時(shí)間: 方波周期為方波周期為500s,定時(shí),定時(shí)250s。 模式選擇:模式選擇: 定時(shí)器定時(shí)器0可以選擇模式可以選擇模式0、1和和2。模式。模式2最大的定時(shí)時(shí)間為最大的定時(shí)時(shí)間為256s,滿(mǎn)足,滿(mǎn)足250s的定時(shí)的定時(shí)要求,選擇模式要求,選擇模式2。6.2.4 模式模式 3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用(1)初值計(jì)

23、算)初值計(jì)算 (256-X)1s=250s X=6;則則TH0=TL0=6 (2)程序:)程序:采用中斷處理方式的程序采用中斷處理方式的程序 :C語(yǔ)言程序語(yǔ)言程序 :# include /包含特殊功能寄存器庫(kù)包含特殊功能寄存器庫(kù)sbit P1_0=P10; 6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用voidmain( )TMOD=0 x02; /選擇工作模式選擇工作模式TL0=0 x06;TH0=0 x06; /為定時(shí)器賦初值為定時(shí)器賦初值 ET0=1; /允許定時(shí)允許定時(shí)0中斷中斷 EA=1;TR0=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器0while(1);/等待中斷等待中斷void tim

24、e0_int(void) interrupt 1 P1_0=P1_0;6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用匯編語(yǔ)言程序:匯編語(yǔ)言程序:ORG0000HLJMPMAIN ORG000BH;中斷處理程序;中斷處理程序RETIORG 0030H;主程序;主程序MAIN:MOV TMOD,#02H MOV TL0,#06HMOV TH0,#06HSETB ET0;允許定時(shí)器;允許定時(shí)器0中斷中斷SETB EA;允許;允許CPU中斷中斷SETB TR0;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器0SJMP $;等待中斷;等待中斷END6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用采用查詢(xún)方式處理的

25、程序:采用查詢(xún)方式處理的程序:C語(yǔ)言程序:語(yǔ)言程序:# include sbitP1_0=P10;void main三三TMOD=0 x02;TL0=0 x06;TH0=0 x06; TR0=1;while (1)while(!TF0) ;/查詢(xún)計(jì)數(shù)溢出查詢(xún)計(jì)數(shù)溢出TF0=0;P1_0=P1_0;6.2.4 模式模式3的邏輯結(jié)構(gòu)及應(yīng)用的邏輯結(jié)構(gòu)及應(yīng)用匯編語(yǔ)言程序匯編語(yǔ)言程序:MAIN:MOV TMOD,#02H;主程序;主程序MOVTL0,#06HMOVTH0,#06HSETBTR0LOOP:JNBTF0,$;查詢(xún)計(jì)數(shù)溢出;查詢(xún)計(jì)數(shù)溢出CLRTF0 SJMP LOOPEND6.3 定時(shí)器定時(shí)器

26、/計(jì)數(shù)器計(jì)數(shù)器T2主要內(nèi)容主要內(nèi)容6.3.1 定時(shí)器定時(shí)器T2的特殊寄存器的特殊寄存器6.3.2 定時(shí)器定時(shí)器T2的工作方式及結(jié)構(gòu)的工作方式及結(jié)構(gòu)6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊寄存器的特殊寄存器89C52中的中的T2是一個(gè)是一個(gè)16位的、具有自動(dòng)位的、具有自動(dòng)重裝載和捕獲能力的定時(shí)器重裝載和捕獲能力的定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。T2的結(jié)構(gòu):除的結(jié)構(gòu):除TL2、TH2和控制寄存器和控制寄存器T2CON及及T2MOD之外,還增加了捕獲寄存之外,還增加了捕獲寄存器器RCAP2L(低字節(jié))和(低字節(jié))和RCAP2H(高字(高字節(jié))。節(jié))。 T2的計(jì)數(shù)脈沖源有兩個(gè):一個(gè)是內(nèi)部機(jī)的計(jì)數(shù)脈沖源

27、有兩個(gè):一個(gè)是內(nèi)部機(jī)器周期,另一個(gè)是由器周期,另一個(gè)是由T2(P10)端輸入的外)端輸入的外部計(jì)數(shù)脈沖。部計(jì)數(shù)脈沖。 6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器T2有有4種工作方式種工作方式 自動(dòng)重裝、捕獲和波自動(dòng)重裝、捕獲和波特率發(fā)生器、可編程時(shí)鐘輸出。特率發(fā)生器、可編程時(shí)鐘輸出。 增加了兩個(gè)引腳:增加了兩個(gè)引腳: T2講義講義,T2EX講義講義。1、定時(shí)器、定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2的控制寄存器的控制寄存器T2CON 可位尋址和字節(jié)尋址。可位尋址和字節(jié)尋址。 功能:選擇功能:選擇T2的工作方式和工作模式。的工作方式和工作模式。 允許位尋址和字節(jié)尋址。其格式如下:

28、允許位尋址和字節(jié)尋址。其格式如下: 6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器TF2 :定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2的溢出中斷標(biāo)志位的溢出中斷標(biāo)志位 T2溢出時(shí)置位,申請(qǐng)中斷。軟件清零。溢出時(shí)置位,申請(qǐng)中斷。軟件清零。波特率發(fā)生器方式下,波特率發(fā)生器方式下,RCLK1或或TCLK1時(shí),定時(shí)器溢出不對(duì)時(shí),定時(shí)器溢出不對(duì)TF2進(jìn)行置位。進(jìn)行置位。EXF2講義講義:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2外部觸發(fā)外部觸發(fā)標(biāo)志位標(biāo)志位T2CON(C8H)D7D6D5D4D3D2D1D0TF2 EXF2 RCLK TCLK EXEN2 TR2C/T2 CP/RL2圖6-10 定時(shí)

29、器T2的控制寄存器 6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器 EXEN21,且,且T2EX引腳上有負(fù)跳變引腳上有負(fù)跳變將觸發(fā)捕獲或重裝操作,將觸發(fā)捕獲或重裝操作,EXF2=1,向,向CPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。 軟件復(fù)位。軟件復(fù)位。RCLK:串行口接收時(shí)鐘允許標(biāo)志位:串行口接收時(shí)鐘允許標(biāo)志位RCLK=1時(shí),時(shí),T2溢出信號(hào)分頻后做串行口溢出信號(hào)分頻后做串行口工作在模式工作在模式1和和3的接收波特率。的接收波特率。RCLK=0時(shí),時(shí),T1溢出信號(hào)分頻信后做串行溢出信號(hào)分頻信后做串行口接收波特率。口接收波特率。6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊

30、功能寄存器的特殊功能寄存器TCLK:串行口發(fā)送時(shí)鐘允許標(biāo)志位:串行口發(fā)送時(shí)鐘允許標(biāo)志位TCLK=1時(shí),時(shí),T2溢出信號(hào)分頻后做串行口溢出信號(hào)分頻后做串行口工做在模式工做在模式1和和3的發(fā)送波特率。的發(fā)送波特率。TCLK=0時(shí),時(shí),T1溢出信號(hào)分頻后做串行口溢出信號(hào)分頻后做串行口的發(fā)送波特率。的發(fā)送波特率。6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器 EXEN2 ( T2CON3 ) :定時(shí)器:定時(shí)器/計(jì)數(shù)計(jì)數(shù)器器2外部允許標(biāo)志位外部允許標(biāo)志位EXEN2=1,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2沒(méi)有工作在波沒(méi)有工作在波特率發(fā)生器方式,如特率發(fā)生器方式,如T2EX講義講義引

31、腳上引腳上產(chǎn)生負(fù)跳變時(shí),將激活產(chǎn)生負(fù)跳變時(shí),將激活“捕獲捕獲”或或“重裝重裝”操作。操作。 EXEN2=0,T2EX引腳上的電平變化對(duì)定引腳上的電平變化對(duì)定時(shí)器時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2不起作用。不起作用。6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器TR2 :定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2啟動(dòng)控制位啟動(dòng)控制位TR2=1,啟動(dòng)定時(shí)器,啟動(dòng)定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2。TR2=0,停止定時(shí)器,停止定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2。C/T2:T2的定時(shí)器或計(jì)數(shù)器方式選擇位。的定時(shí)器或計(jì)數(shù)器方式選擇位。 C/T2=1,T2為計(jì)數(shù)器。為計(jì)數(shù)器。 對(duì)對(duì)T2講義講義引腳輸入脈沖進(jìn)行計(jì)數(shù)(下引腳輸入脈

32、沖進(jìn)行計(jì)數(shù)(下降沿觸發(fā));當(dāng)降沿觸發(fā));當(dāng)T2講義講義產(chǎn)生負(fù)跳變時(shí),計(jì)產(chǎn)生負(fù)跳變時(shí),計(jì)數(shù)器增數(shù)器增1。 6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器C/T2=0, T2做定時(shí)器。做定時(shí)器。每個(gè)機(jī)器周期每個(gè)機(jī)器周期T2加加1。CP/RL2 :捕獲和重裝載方式選擇控制位:捕獲和重裝載方式選擇控制位 捕獲方式:捕獲方式: CP/RL2=1,EXEN2=1,T2EX講義講義引腳負(fù)跳變將觸發(fā)捕獲操作。引腳負(fù)跳變將觸發(fā)捕獲操作。 重裝載方式:重裝載方式:CP/RL2=0,EXEN2=1,T2EX引腳有負(fù)跳變引腳有負(fù)跳變或或T2計(jì)滿(mǎn)溢出時(shí),觸發(fā)自動(dòng)重裝操作。計(jì)滿(mǎn)溢出時(shí),觸發(fā)自動(dòng)

33、重裝操作。6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器 RCLK=1或或TCLK=1時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2做波做波特率發(fā)生器。特率發(fā)生器。CP/RL2標(biāo)志位不起作用,當(dāng)標(biāo)志位不起作用,當(dāng)T2溢溢出時(shí)強(qiáng)制自動(dòng)裝載。出時(shí)強(qiáng)制自動(dòng)裝載。2、數(shù)據(jù)寄存器、數(shù)據(jù)寄存器TH2、TL28位的數(shù)據(jù)寄存器,組成位的數(shù)據(jù)寄存器,組成16位定時(shí)器位定時(shí)器/計(jì)數(shù)器。計(jì)數(shù)器。 字節(jié)尋址,地址分別為字節(jié)尋址,地址分別為CDH和和CCH。復(fù)位后,復(fù)位后,TH2=00H,TL2=00H。3、捕獲寄存器、捕獲寄存器RCAP2H和和RCAP2L6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的

34、特殊功能寄存器的特殊功能寄存器RCAP2H:高:高8位捕獲寄存器,字節(jié)地位捕獲寄存器,字節(jié)地址為址為CBH。RCAP2L:低:低8位捕獲寄存器,字節(jié)地址位捕獲寄存器,字節(jié)地址為為CAH。捕獲方式,保存當(dāng)前捕獲的計(jì)數(shù)值。捕獲方式,保存當(dāng)前捕獲的計(jì)數(shù)值。重裝方式,保存重裝初值。重裝方式,保存重裝初值。復(fù)位后均為復(fù)位后均為00H。6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器功能:功能:對(duì)定時(shí)器的加對(duì)定時(shí)器的加1減減1計(jì)數(shù)方式進(jìn)行設(shè)置。計(jì)數(shù)方式進(jìn)行設(shè)置。 選擇是否工作在可編程時(shí)鐘輸出方式。選擇是否工作在可編程時(shí)鐘輸出方式。復(fù)位后為復(fù)位后為00B。T2MOD(C9H)D7D

35、6D5D4D3D2D1D0 T2OEDCEN 圖6-11 定時(shí)器T2的模式控制寄存器 4、定時(shí)器/計(jì)數(shù)器2的模式控制寄存器T2MOD6.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的特殊功能寄存器的特殊功能寄存器T2MOD中標(biāo)志中標(biāo)志 :保留位,未定義,為:保留位,未定義,為未來(lái)功能擴(kuò)展用。未來(lái)功能擴(kuò)展用。T2OE:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2輸出啟動(dòng)位。輸出啟動(dòng)位。T2OE1,工作在可編程時(shí)鐘輸出方式。,工作在可編程時(shí)鐘輸出方式。輸出方波信號(hào)至輸出方波信號(hào)至T2(P1.0)引腳。引腳。DCEN:定時(shí)器/計(jì)數(shù)器2向上/向下計(jì)數(shù)控制位。當(dāng)DCENl,T2自動(dòng)向下(遞減)計(jì)數(shù)當(dāng)DCEN0, T2自動(dòng)向

36、上(遞增)計(jì)數(shù) 6.3.2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的工作方式的工作方式 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2是一個(gè)是一個(gè)16位的加位的加1計(jì)數(shù)器,計(jì)數(shù)器,具有四種工作方式。如表具有四種工作方式。如表6-2所示:所示: 方式選擇寄存器:方式選擇寄存器:T2CON和和T2MOD。注意:無(wú)論注意:無(wú)論T2做定時(shí)器還是計(jì)數(shù)器,都具做定時(shí)器還是計(jì)數(shù)器,都具有捕獲和自動(dòng)重裝的功能。有捕獲和自動(dòng)重裝的功能。6.3.2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T2的工作方式的工作方式表6-2定時(shí)器/計(jì)數(shù)器2的工作方式RCLK+TCLKCP/RL2TR2T2OE工作方式001016位自動(dòng)重裝方式0110捕獲方式1 10波特率

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

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

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

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

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

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

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

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

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

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

47、器應(yīng)用舉例定時(shí)器應(yīng)用舉例主要內(nèi)容主要內(nèi)容6.4.1 定時(shí)器的初始化定時(shí)器的初始化6.4.2 定時(shí)器應(yīng)用舉例定時(shí)器應(yīng)用舉例6.4.1 定時(shí)器的初始化定時(shí)器的初始化 在使用定時(shí)器在使用定時(shí)器/計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行初始化編計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行初始化編程。程。一、定時(shí)器的初始化步驟一、定時(shí)器的初始化步驟1、選擇工作模式和工作方式。選擇工作模式和工作方式。 設(shè)置設(shè)置TMOD、T2MOD。2、設(shè)置定時(shí)器的計(jì)數(shù)初值。、設(shè)置定時(shí)器的計(jì)數(shù)初值。 設(shè)置設(shè)置THx和和TLx,RCAP2H和和RCAP2L。3、中斷設(shè)置:設(shè)置、中斷設(shè)置:設(shè)置IE。4、啟動(dòng)定時(shí)器。、啟動(dòng)定時(shí)器。 設(shè)置設(shè)置TCON或或T2CON。

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

49、/12)。)。6.4.1 定時(shí)器的初始化定時(shí)器的初始化如果進(jìn)行定時(shí)時(shí)間為如果進(jìn)行定時(shí)時(shí)間為t,計(jì)數(shù)初值為,計(jì)數(shù)初值為X,則:,則:t=( 2n -X) 12/fosc2、工作于計(jì)數(shù)方式、工作于計(jì)數(shù)方式 當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖計(jì)數(shù)。當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖計(jì)數(shù)。利用計(jì)數(shù)器計(jì)數(shù)結(jié)束產(chǎn)生溢出的特性,來(lái)計(jì)利用計(jì)數(shù)器計(jì)數(shù)結(jié)束產(chǎn)生溢出的特性,來(lái)計(jì)算初值算初值X 。則有:。則有:X= 2n計(jì)數(shù)次數(shù)計(jì)數(shù)次數(shù)6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例例例6-3 利用定時(shí)器利用定時(shí)器T1的模式的模式2對(duì)外部信號(hào)進(jìn)行對(duì)外部信號(hào)進(jìn)行計(jì)數(shù),要求每計(jì)滿(mǎn)計(jì)數(shù),要求每計(jì)滿(mǎn)100次,將端取反。次,將端取反。分析

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

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

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

53、時(shí)器的應(yīng)用舉例C語(yǔ)言程序:語(yǔ)言程序:計(jì)算脈寬和處理程序略。計(jì)算脈寬和處理程序略。#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 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例while(!P3_2);while(P3_2);TR0= 0;return (TH0*256+TL0);匯編語(yǔ)言程序匯編語(yǔ)言程序:INT00:MOV TMOD,#09H MOV TL0,#00H;設(shè)置計(jì)數(shù)初值設(shè)置計(jì)數(shù)初值MOV TH0,#00HLOP1:JBP3.2,LOP1;等待變低電平

54、等待變低電平6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例 SETB TR0;啟動(dòng)啟動(dòng)T0計(jì)數(shù)計(jì)數(shù)LOP2:JNBP3.2,LOP2 ;等待變成高電平等待變成高電平LOP3:JBP3.2,LOP3;等待變成低電平等待變成低電平 CLRTR0;停止停止T0計(jì)數(shù)計(jì)數(shù)MOV A,TL0;計(jì)數(shù)器計(jì)數(shù)器TL0中的內(nèi)容送中的內(nèi)容送AMOV B,TH0;計(jì)數(shù)器計(jì)數(shù)器TH0中的內(nèi)容送中的內(nèi)容送B 本題也可以使用定時(shí)器本題也可以使用定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器2工作在捕獲工作在捕獲方式下進(jìn)行脈寬測(cè)試。方式下進(jìn)行脈寬測(cè)試。 注意:注意:T2脈寬測(cè)試必須在定時(shí)器未溢出的情脈寬測(cè)試必須在定時(shí)器未溢出的情況下才有效。況下才有效。

55、 6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例例例6-5 某應(yīng)用系統(tǒng)要求通過(guò)某應(yīng)用系統(tǒng)要求通過(guò)P1.0和和P1.1口口分別輸出脈沖周期為分別輸出脈沖周期為200s和和400s的方波,的方波,fosc=6MHz。 分析:需要兩個(gè)定時(shí)器??梢赃x擇使用定分析:需要兩個(gè)定時(shí)器??梢赃x擇使用定時(shí)器時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0,設(shè)置為定時(shí)模式,工作模式,設(shè)置為定時(shí)模式,工作模式3,分成兩個(gè)分成兩個(gè)8位的定時(shí)器。位的定時(shí)器。1、計(jì)算定時(shí)初值。、計(jì)算定時(shí)初值。t=(256 -X) 12/fosc初值分別為初值分別為0CEH和和9CH。6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例2、C語(yǔ)言程序:語(yǔ)言程序:# inclu

56、de sbitP1_0=P10; /進(jìn)行位定義進(jìn)行位定義sbitP1_1=P11;void main( )TMOD=0 x03;/設(shè)置設(shè)置T0定時(shí),工作在模式定時(shí),工作在模式3TL0=0 xce;/設(shè)置設(shè)置TL0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生 200s方波方波TH0=0 x9c;/設(shè)置設(shè)置TH0計(jì)數(shù)初值,產(chǎn)生計(jì)數(shù)初值,產(chǎn)生 400s方波方波ET0=1;/設(shè)置定時(shí)器設(shè)置定時(shí)器0中斷允許位中斷允許位6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例ET1=1;/設(shè)置定時(shí)器設(shè)置定時(shí)器/計(jì)數(shù)計(jì)數(shù)/器器1中斷允許位中斷允許位EA=1;/設(shè)置總中斷允許位設(shè)置總中斷允許位TR0=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T0TR1

57、=1;/啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T1while(1); /等待溢出等待溢出void time0L_int(void) interrupt 1/T0中斷服務(wù)程序中斷服務(wù)程序TL0=0 xce;/定時(shí)器重賦初值定時(shí)器重賦初值P1_0=P1_0;/產(chǎn)生方波產(chǎn)生方波6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例void time0H_int(void) interrupt 3 /T1中斷服務(wù)程序中斷服務(wù)程序TH0=0 x9c;/定時(shí)器重賦初值定時(shí)器重賦初值P1_1=P1_1;/產(chǎn)生方波產(chǎn)生方波3、匯編語(yǔ)言程序:、匯編語(yǔ)言程序:主程序:主程序:ORG0000HLJMP MAIN6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例ORG000BHLJMPT0SORG001BHLJMPT1SMAIN:MOVTMOD,#03H ; 設(shè)置設(shè)置T0定時(shí),模式定時(shí),模式3MOVTL0,#0CEH;設(shè)置設(shè)置TL0計(jì)數(shù)初值,產(chǎn)計(jì)數(shù)初值,產(chǎn)生生200s方波方波MOVTH0, #9CH;設(shè)置設(shè)置TH0計(jì)數(shù)初值,產(chǎn)計(jì)數(shù)初值,產(chǎn)生生400s方波方波6.4.2 定時(shí)器的應(yīng)用舉例定時(shí)器的應(yīng)用舉例SETBEA;設(shè)置總中斷允許位設(shè)置總中斷允許

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論