2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩100頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)原理及應(yīng)用 (C語(yǔ)言版)第6章 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器,主 編:周?chē)?guó)運(yùn)本章制作:仝選悅中國(guó)水利水電出版社,第6章 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器,目 錄6.1 MCS-51定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)及原理6.2 定時(shí)器T0、T16.3 定時(shí)器T26.4 定時(shí)器應(yīng)用舉例,,本章主要討論MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器的邏輯結(jié)構(gòu)和工作原理。內(nèi)容主要有MCS-51單片機(jī)定時(shí)器T

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

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

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

5、計(jì)數(shù)信號(hào)由片內(nèi)振蕩電路提供,振蕩脈沖12分頻送給計(jì)數(shù)器,每個(gè)機(jī)器周期計(jì)數(shù)器值增1。 例如:如果晶振頻率為12MHz,則最高計(jì)數(shù)頻率為0.5MHz,,6.1.2 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器的工作原理,,C/T =1 ,為計(jì)數(shù)方式。計(jì)數(shù)信號(hào)由Tx引腳(P3.4、P3.5和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ì)滿溢出,從0開(kāi)始

6、繼續(xù)計(jì)數(shù),TFx=1 ,向CPU申請(qǐng)中斷。,,6.1.3 定時(shí)器/計(jì)數(shù)器的方式和控制寄存器,1、T0、T1 工作模式寄存器TMOD 功能:確定定時(shí)器的工作模式。其格式如圖6-3所示:,GATE——外部門(mén)控制位。GATE=1,使用外部控制門(mén)。 TRx=1,P3.2(P3.3)=1時(shí),啟動(dòng)定時(shí)器。,,,6.1.3 定時(shí)器/計(jì)數(shù)器的方式和控制寄存器,GATE=0,不使用外部門(mén)控制計(jì)數(shù)器 C/T——定時(shí)或計(jì)數(shù)方式選擇

7、位 。C/T=0時(shí),為定時(shí)器C/T=1時(shí),為計(jì)數(shù)器 采樣過(guò)程:CPU在每機(jī)器周期S5P2期間,輸入信號(hào)進(jìn)行采樣。若前一機(jī)器周期采樣值為1,下一機(jī)器周期采樣值為0,則計(jì)數(shù)器增1,隨后的機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。,,,,6.1.3 定時(shí)器/計(jì)數(shù)器的方式和控制寄存器,M1、M0——工作模式選擇位。如下表所示:,6.1.3 定時(shí)器/計(jì)數(shù)器的方式和控制寄存器,2、T0、T1的控制寄存器TCON,TF1、TF

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

9、 定時(shí)器T0、T1的工作模式及應(yīng)用,主要內(nèi)容6.2.1 模式0的邏輯結(jié)構(gòu)及應(yīng)用6.2.2 模式1的邏輯結(jié)構(gòu)及應(yīng)用6.2.3 模式2的邏輯結(jié)構(gòu)及應(yīng)用6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,6.2.1 模式0的邏輯結(jié)構(gòu)及應(yīng)用,M1M0=00,選擇模式0。邏輯結(jié)構(gòu)如圖6-5所示。(以T0為例) T0的結(jié)構(gòu):13位定時(shí)器/計(jì)數(shù)器。 由TH0的8位、TL0的低5位構(gòu)成(高3位未用) 工作過(guò)程:TL0溢出后向TH0進(jìn)位

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

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

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

13、)×機(jī)器周期 最大定時(shí)時(shí)間=28 ×機(jī)器周期優(yōu)點(diǎn):模式2能夠進(jìn)行自動(dòng)重裝載。模式0和1計(jì)數(shù)溢出后,計(jì)數(shù)器為全0。循環(huán)定時(shí)或計(jì)數(shù)時(shí),需要重新設(shè)置初值。說(shuō)明:在模式2能夠滿足計(jì)數(shù)或定時(shí)要求時(shí),盡可能使用模式2。,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,1、T0模式3的結(jié)構(gòu)特點(diǎn) M1 M0 =11,選擇模式3。邏輯結(jié)構(gòu)如圖6-8和6-9所示: 結(jié)構(gòu): TL0、TH0分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器 TL0: 8位定

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

15、方。T1作波特率發(fā)生器,其計(jì)數(shù)溢出直接送至串行口。設(shè)置好工作方式,串行口波特率發(fā)生器開(kāi)始自動(dòng)運(yùn)行。 TMOD中T1的M1M0=11,T1停止工作。,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,,圖6-9 模式3下,T1的邏輯結(jié)構(gòu)圖,思考:T0工作在模式3,T1怎么進(jìn)行方式設(shè)置?,,串行口,,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,1、定時(shí)器/計(jì)數(shù)器工作模式的選擇方法(1)首先計(jì)算計(jì)數(shù)值N(2)確定工作模式原則是盡可能地選擇模式

16、2若 N ≤ 256選擇模式2,否則選擇模式1(3)如果需要增加一個(gè)定時(shí)器/計(jì)數(shù)器選擇模式3。,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,2、定時(shí)器/計(jì)數(shù)器初值X的計(jì)算方法因?yàn)閄 + N = 28或216所以X = 28或216-N(1)對(duì)定時(shí)器設(shè)定時(shí)時(shí)間為tN = t/機(jī)器周期所以X = 28或216- t/機(jī)器周期(2)對(duì)計(jì)數(shù)器X = 28或216- N,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,例6-1

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

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

19、nclude //包含特殊功能寄存器庫(kù)sbitP1_0=P1^0; //進(jìn)行位定義void main( ){ TMOD=0x01; //T0做定時(shí)器,模式1TL0=0x0c;TH0=0xfe;//設(shè)置定時(shí)器的初值ET0=1; //允許T0中斷 EA=1; //允許CPU中斷TR0=1; //啟動(dòng)定時(shí)器while(

20、1); //等待中斷 },6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,void time0_int(void) interrupt 1{//中斷服務(wù)程序TL0=0x0c;TH0=0xfe;//定時(shí)器重賦初值P1_0=~P1_0;//P1.0取反,輸出方波}匯編語(yǔ)言程序:ORG0000HSJMPMAINORG000BHLJMP

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

22、MOVTH0,#0FEH;重裝定時(shí)初值CPLP1.0 ;P1.0取反RETI ;中斷返回END,6.2.4 模式 3的邏輯結(jié)構(gòu)及應(yīng)用,例6-2 設(shè)單片機(jī)的振蕩頻率為12MHz,用定時(shí)器/計(jì)數(shù)器0編程實(shí)現(xiàn)從P1.0輸出周期為500μs的方波。分析:方法同例6-1定時(shí)時(shí)間: 方波周期為500μs,定時(shí)250μs。 模式選擇: 定時(shí)器0可以

23、選擇模式0、1和2。模式2最大的定時(shí)時(shí)間為256μs,滿足250μs的定時(shí)要求,選擇模式2。,6.2.4 模式 3的邏輯結(jié)構(gòu)及應(yīng)用,(1)初值計(jì)算 (256-X)×1µs=250µs X=6;則TH0=TL0=6 (2)程序:采用中斷處理方式的程序 :C語(yǔ)言程序 :# include //包含特殊功能寄存器庫(kù)sbit P1_0=P1^0;,6.2

24、.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,voidmain( ){TMOD=0x02; //選擇工作模式TL0=0x06;TH0=0x06; //為定時(shí)器賦初值 ET0=1; //允許定時(shí)0中斷 EA=1;TR0=1;//啟動(dòng)定時(shí)器0while(1);//等待中斷}void time0_int(void) interrupt 1 { P1_

25、0=~P1_0;},6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,匯編語(yǔ)言程序:ORG0000HLJMPMAIN ORG000BH;中斷處理程序CPLP1.0RETIORG 0030H;主程序MAIN:MOV TMOD,#02H MOV TL0,#06HMOV TH0,#06HSETB ET0;允許定時(shí)器0中斷SETB

26、 EA;允許CPU中斷SETB TR0;啟動(dòng)定時(shí)器0SJMP $;等待中斷END,6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,采用查詢方式處理的程序:C語(yǔ)言程序:# include sbitP1_0=P1^0;void main(){TMOD=0x02;TL0=0x06;TH0=0x06; TR0=1;while (1){w

27、hile(!TF0) ;//查詢計(jì)數(shù)溢出TF0=0;P1_0=~P1_0;}},6.2.4 模式3的邏輯結(jié)構(gòu)及應(yīng)用,匯編語(yǔ)言程序:MAIN:MOV TMOD,#02H;主程序MOVTL0,#06HMOVTH0,#06HSETBTR0LOOP:JNBTF0,$;查詢計(jì)數(shù)溢出CLRTF0CPLP1.0 SJMPLOOP

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

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

30、殊功能寄存器,TF2 :定時(shí)器/計(jì)數(shù)器2的溢出中斷標(biāo)志位 T2溢出時(shí)置位,申請(qǐng)中斷。軟件清零。波特率發(fā)生器方式下,RCLK=1或TCLK=1時(shí),定時(shí)器溢出不對(duì)TF2進(jìn)行置位。EXF2(T2CON.6):定時(shí)器/計(jì)數(shù)器2外部觸發(fā)標(biāo)志位,,,6.3.1 定時(shí)器/計(jì)數(shù)器T2的特殊功能寄存器,EXEN2=1,且T2EX引腳上有負(fù)跳變將觸發(fā)捕獲或重裝操作,EXF2=1,向CPU發(fā)出中斷請(qǐng)求。 軟件復(fù)位。RCLK

31、:串行口接收時(shí)鐘允許標(biāo)志位RCLK=1時(shí),T2溢出信號(hào)分頻后做串行口工作在模式1和3的接收波特率。RCLK=0時(shí),T1溢出信號(hào)分頻信后做串行口接收波特率。,6.3.1 定時(shí)器/計(jì)數(shù)器T2的特殊功能寄存器,TCLK:串行口發(fā)送時(shí)鐘允許標(biāo)志位TCLK=1時(shí),T2溢出信號(hào)分頻后做串行口工做在模式1和3的發(fā)送波特率。TCLK=0時(shí),T1溢出信號(hào)分頻后做串行口的發(fā)送波特率。,6.3.1 定時(shí)器/計(jì)數(shù)器T2的特殊功能寄存器,EXEN2

32、( T2CON.3 ) :定時(shí)器/計(jì)數(shù)器2外部允許標(biāo)志位EXEN2=1,定時(shí)器/計(jì)數(shù)器2沒(méi)有工作在波特率發(fā)生器方式,如T2EX(P1.1)引腳上產(chǎn)生負(fù)跳變時(shí),將激活“捕獲”或“重裝”操作。 EXEN2=0,T2EX引腳上的電平變化對(duì)定時(shí)器/計(jì)數(shù)器2不起作用。,6.3.1 定時(shí)器/計(jì)數(shù)器T2的特殊功能寄存器,TR2 :定時(shí)器/計(jì)數(shù)器2啟動(dòng)控制位TR2=1,啟動(dòng)定時(shí)器/計(jì)數(shù)器2。TR2=0,停止定時(shí)器/計(jì)數(shù)器2。C/T2:T2

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

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

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

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

37、, T2自動(dòng)向上(遞增)計(jì)數(shù),6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,定時(shí)器/計(jì)數(shù)器2是一個(gè)16位的加1計(jì)數(shù)器,具有四種工作方式。如表6-2所示: 方式選擇寄存器:T2CON和T2MOD。注意:無(wú)論T2做定時(shí)器還是計(jì)數(shù)器,都具有捕獲和自動(dòng)重裝的功能。,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,,,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,一、16位自動(dòng)重裝方式CP/RL2=0,DCEN=0時(shí),選擇自動(dòng)重裝方式。結(jié)構(gòu)如下

38、圖所示:T2計(jì)滿溢出時(shí), TF2置1,申請(qǐng)中斷。打開(kāi)重裝載三態(tài)緩沖器,將RCAP2H和RCAP2L的內(nèi)容自動(dòng)裝載到TH2和TL2中。EXEN2=1且T2EX(P1.1)端的信號(hào)有負(fù)跳變時(shí), EXF2置1,申請(qǐng)中斷。引起重裝載操作。,,,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,CP/RL2=0,DCEN=1時(shí),定時(shí)器/計(jì)數(shù)器2既可以增量(加1)和減量(減1)計(jì)數(shù)。T2EX電平控制計(jì)數(shù)方

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

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

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

42、存器RCAP2H和RCAP2L中同時(shí)EXF2置1,申請(qǐng)中斷。,,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,,圖6-14 捕獲方式的邏輯結(jié)構(gòu)圖,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,三、波特率發(fā)生器方式 RCLK=1或TCLK= 1時(shí),選擇波特率發(fā)生器方式。結(jié)構(gòu)如下圖所示,從圖可以看出:RCLK=1,T2為接收波特率發(fā)生器。 TCLK=1,T2為發(fā)送波特率發(fā)生器。 C/T2=0,選用內(nèi)部脈沖。

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

44、1,當(dāng)T2EX有負(fù)跳變時(shí),EXF2置1,由于不發(fā)生重裝載或捕獲操作,此時(shí)T2EX引腳可外接一中斷源。,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,定時(shí)器/計(jì)數(shù)器T2作為波特率發(fā)生器使用時(shí)的編程方法如下:…RCAP2H=0x30;//設(shè)置波特率RCAP2L=0x38;TCLK=1;//選擇定時(shí)器2的溢出脈沖作為波特率發(fā)生器 注意:在波特率發(fā)生器工作方式下,在 T2計(jì)數(shù)過(guò)程中不能再讀/寫(xiě) TH2和TL

45、2的內(nèi)容。,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,四、可編程時(shí)鐘輸出方式 T2OE=1時(shí),C/T2=0時(shí),T2工作于時(shí)鐘輸出方式。結(jié)構(gòu)如下圖所示: 工作過(guò)程:當(dāng)T2計(jì)滿溢出時(shí),T2(P1.0)引腳狀態(tài)翻轉(zhuǎn),從而輸出頻率可調(diào)、精度很高的方波信號(hào);同時(shí)使RCAP2H和RCAP2L寄存器內(nèi)容裝入TH2和TL2寄存器中,重新計(jì)數(shù)。在時(shí)鐘輸出方式下,T2溢出時(shí)不置位TF2。,,6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,當(dāng)

46、EXEN2=1,T2EX(P1.1)引腳有負(fù)跳變時(shí),EXF2將置1。(同波特率發(fā)生器方式)從P1.0引腳輸出的時(shí)鐘信號(hào)頻率為:Fosc/(4×(65536-(RCAP2H,RCAP2L))),6.3.2 定時(shí)器/計(jì)數(shù)器T2的工作方式,,圖6-16 T2時(shí)鐘輸出方式下的邏輯結(jié)構(gòu)圖,6.4 定時(shí)器應(yīng)用舉例,主要內(nèi)容6.4.1 定時(shí)器的初始化6.4.2 定時(shí)器應(yīng)用舉例,6.4.1 定時(shí)器的初始化,在使用定

47、時(shí)器/計(jì)數(shù)器前,應(yīng)首先對(duì)其進(jìn)行初始化編程。一、定時(shí)器的初始化步驟1、選擇工作模式和工作方式。 設(shè)置TMOD、T2MOD。2、設(shè)置定時(shí)器的計(jì)數(shù)初值。 設(shè)置THx和TLx,RCAP2H和RCAP2L。3、中斷設(shè)置:設(shè)置IE。4、啟動(dòng)定時(shí)器。 設(shè)置TCON或T2CON。 可以使用位操作指令。例如:SETB TRx。,6.4.1 定時(shí)器的初始化,二、定時(shí)器/計(jì)數(shù)器初值計(jì)算 根據(jù)

48、定時(shí)器/計(jì)數(shù)器的模式和方式,計(jì)算計(jì)數(shù)初值(注意T2)計(jì)數(shù)器的長(zhǎng)度為n,則計(jì)數(shù)的最大值為2n 。1、工作于定時(shí)方式計(jì)數(shù)脈沖由內(nèi)部的時(shí)鐘提供,每個(gè)機(jī)器周期進(jìn)行加1。設(shè)晶振頻率為fosc,則計(jì)數(shù)脈沖的頻率為fosc/12,計(jì)數(shù)脈沖周期T=1/(fosc/12)。,6.4.1 定時(shí)器的初始化,如果進(jìn)行定時(shí)時(shí)間為t,計(jì)數(shù)初值為X,則:t=( 2n -X)×12/fosc2、工作于計(jì)數(shù)方式 當(dāng)工作在計(jì)數(shù)方式時(shí),對(duì)外部脈沖

49、計(jì)數(shù)。利用計(jì)數(shù)器計(jì)數(shù)結(jié)束產(chǎn)生溢出的特性,來(lái)計(jì)算初值X 。則有:X= 2n—計(jì)數(shù)次數(shù),6.4.2 定時(shí)器的應(yīng)用舉例,例6-3 利用定時(shí)器T1的模式2對(duì)外部信號(hào)進(jìn)行計(jì)數(shù),要求每計(jì)滿100次,將P1.0端取反。分析:T1工作在計(jì)數(shù)方式。脈沖數(shù)100。模式2,模式字TMOD=0110××××b。1、初值計(jì)數(shù):在模式2下:X= 28-100=156D=9CH2、C語(yǔ)言程序:#include

50、 sbit p1_0=p1^0;//進(jìn)行位定義,6.4.2 定時(shí)器的應(yīng)用舉例,void main ( ){TMOD=0x60;//T1工作在模式2,計(jì)數(shù)TL1=0x9c;//裝入計(jì)數(shù)(重裝)初值TH1=0x9c;ET1=1;//允許定時(shí)器1中斷EA=1;//開(kāi)中斷TR1=1 ;//啟動(dòng)定時(shí)器1while(1);},6.4.2 定時(shí)器的應(yīng)用舉例,void tim

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

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

53、181;s。,,,6.4.2 定時(shí)器的應(yīng)用舉例,C語(yǔ)言程序:計(jì)算脈寬和處理程序略。#include sbit P3_2=P3^2;unsigned int_test( ){TMOD=0x09;TL0=0x00;TH0=0x00;while(P3_2);TR0=1;,6.4.2 定時(shí)器的應(yīng)用舉例,while(!P3_2);while(P3_2);TR0= 0;return (TH0*256

54、+TL0);}匯編語(yǔ)言程序:INT00:MOV TMOD,#09H MOV TL0,#00H;設(shè)置計(jì)數(shù)初值MOV TH0,#00HLOP1:JBP3.2,LOP1;等待P3.2變低電平,6.4.2 定時(shí)器的應(yīng)用舉例,SETB TR0;啟動(dòng)T0計(jì)數(shù)LOP2:JNBP3.2,LOP2;等待P3.2變成高電平LOP3:JBP3.2,LOP3;等待P3.2變成低電平

55、 CLRTR0;停止T0計(jì)數(shù)MOV A,TL0;計(jì)數(shù)器TL0中的內(nèi)容送AMOV B,TH0;計(jì)數(shù)器TH0中的內(nèi)容送B 本題也可以使用定時(shí)器/計(jì)數(shù)器2工作在捕獲方式下進(jìn)行脈寬測(cè)試。 注意:T2脈寬測(cè)試必須在定時(shí)器未溢出的情況下才有效。,6.4.2 定時(shí)器的應(yīng)用舉例,例6-5 某應(yīng)用系統(tǒng)要求通過(guò)P1.0和P1.1口分別輸出脈沖周期為200µs和400µs的方波,f

56、osc=6MHz。 分析:需要兩個(gè)定時(shí)器??梢赃x擇使用定時(shí)器/計(jì)數(shù)器0,設(shè)置為定時(shí)模式,工作模式3,分成兩個(gè)8位的定時(shí)器。1、計(jì)算定時(shí)初值。t=(256 -X)×12/fosc初值分別為0CEH和9CH。,6.4.2 定時(shí)器的應(yīng)用舉例,2、C語(yǔ)言程序:# include sbitP1_0=P1^0;//進(jìn)行位定義sbitP1_1=P1^1;void main( ){TM

57、OD=0x03;//設(shè)置T0定時(shí),工作在模式3TL0=0xce;//設(shè)置TL0計(jì)數(shù)初值,產(chǎn)生 200µs方波TH0=0x9c;//設(shè)置TH0計(jì)數(shù)初值,產(chǎn)生 400µs方波ET0=1;//設(shè)置定時(shí)器0中斷允許位,6.4.2 定時(shí)器的應(yīng)用舉例,ET1=1;//設(shè)置定時(shí)器/計(jì)數(shù)//器1中斷允許位EA=1;//設(shè)置總中斷允許位TR0=1;

58、//啟動(dòng)定時(shí)器T0TR1=1;//啟動(dòng)定時(shí)器T1while(1); //等待溢出}void time0L_int(void) interrupt 1{//T0中斷服務(wù)程序TL0=0xce;//定時(shí)器重賦初值P1_0=~P1_0;//產(chǎn)生方波},6.4.2 定時(shí)器的應(yīng)用舉例,void time0H_int(void) interrupt 3{ //T1中

59、斷服務(wù)程序TH0=0x9c;//定時(shí)器重賦初值P1_1=~P1_1;//產(chǎn)生方波}3、匯編語(yǔ)言程序:主程序:ORG0000HLJMPMAIN,6.4.2 定時(shí)器的應(yīng)用舉例,ORG000BHLJMPT0SORG001BHLJMPT1SMAIN:MOVTMOD,#03H; 設(shè)置T0定時(shí),模式3MOVTL0,#0CEH;設(shè)置TL0計(jì)

60、數(shù)初值,產(chǎn)生200µs方波MOVTH0,#9CH;設(shè)置TH0計(jì)數(shù)初值,產(chǎn)生400µs方波,6.4.2 定時(shí)器的應(yīng)用舉例,SETBEA;設(shè)置總中斷允許位SETBET0;允許定時(shí)器0中斷SETBET1;允許定時(shí)器1中斷SETBTR0;啟動(dòng)定時(shí)器T0SETBTR1;啟動(dòng)定時(shí)器T1T0中斷服務(wù)程序:T0S:MOVTL0

61、,#0CEH;重新設(shè)置定時(shí)初值CPLP1.0;P1.0口的輸出取反RETI,6.4.2 定時(shí)器的應(yīng)用舉例,T1中斷服務(wù)程序:T1S:MOVTH0,#9CH ;重新設(shè)置定時(shí)初值CPLP1.1 ;對(duì)P1.0口輸出信號(hào)取反RETI ;中斷返回例6-6 利用定時(shí)器精確定時(shí)1s控制LED以秒為單位閃爍。已知fosc=12MHz。分析:定時(shí)器/計(jì)數(shù)器在定時(shí)方式下,各個(gè)

62、模式最大定時(shí)時(shí)間分別為:,6.4.2 定時(shí)器應(yīng)用舉例,定時(shí)器0=(8192-0)×12/fosc=8.192ms 定時(shí)器1=(65536-0)×12/fosc=65.536ms 定時(shí)器2=(256-0)×12/fosc=0.256ms 選擇模式1。定時(shí)時(shí)間為10ms,當(dāng)10ms的定時(shí)時(shí)間到,TF1=1,連續(xù)定時(shí)100次,調(diào)用亮燈函數(shù);再連續(xù)定時(shí)100次,調(diào)用滅燈函數(shù)。循環(huán)工作,即達(dá)到1s閃爍1次的

63、效果。1、初值計(jì)算:(256-X)×12/fosc=10ms初值X=55536=0D8F0H,6.4.2 定時(shí)器應(yīng)用舉例,2、程序設(shè)計(jì):C語(yǔ)言程序:#include sbit LED=P1^0;unsigned char i;void main(){LED=0;//定義燈的初始狀態(tài)為滅TMOD=0x10;//設(shè)置定時(shí)器1工作在模式1TL1=0xf0;TH1=0xd8;//

64、設(shè)置定時(shí)初值TR1=1; //啟動(dòng)定時(shí)器1,6.4.2 定時(shí)器應(yīng)用舉例,ET1=1;//允許定時(shí)器1中斷EA=1;while(1); }void timer1_int() interrupt 3{TL1=0xf0;//定時(shí)器重裝初值TH1=0xd8; if(++i==100){LED=~LED;i=0; }},6.4.2 定時(shí)器應(yīng)用舉例,匯編語(yǔ)言程序:選擇硬件定時(shí)10ms

65、,設(shè)置一計(jì)數(shù)單元,存放計(jì)數(shù)值100,循環(huán)定時(shí)100次。ORG0000HLJMPMAINORG001BHLJMPTIMERMAIN:MOVR0,#100 ;存放計(jì)數(shù)值100MOVTMOD,#10H,6.4.2 定時(shí)器應(yīng)用舉例,MOVTL1,#0F0HMOVTH1,#0D8HSETBET1SETBEASETBTR1CLRP1.0

66、SJMP$TIMER:MOVTL1,#0F0HMOVTH1,#0D8HDJNZR0,NEXTMOVR0,#100CPLP1.0NEXT: RETIEND,6.4.2 定時(shí)器應(yīng)用舉例,例6-7 用定時(shí)器/計(jì)數(shù)器2從P1.0產(chǎn)生一個(gè)5000Hz的方波,假設(shè)晶振頻率fosc為12MHz。分析:當(dāng)T2MOD的T2OE=1,T2CON的C/T2=0時(shí),T2工作于時(shí)鐘輸出方式。T2溢

67、出信號(hào)自動(dòng)觸發(fā)T2(P1.0)引腳狀態(tài)翻轉(zhuǎn)從P1.0引腳輸出頻率可調(diào)、精度高的方波信號(hào)。,,6.4.2 定時(shí)器應(yīng)用舉例,溢出后,RCAP2H和RCAP2L寄存器內(nèi)容裝入TH2 和TL2寄存器中,重新計(jì)數(shù),以便獲得準(zhǔn)確的溢出信號(hào)。輸出信號(hào)頻率為:fosc/(4×(65536-(RCAP2H,RCAP2L)))方波頻率為5000Hz。計(jì)數(shù)初值為65536-600=64936。C語(yǔ)言程序:# include sfr1

68、6 RCAP2=0xca; //特殊寄存器定義,6.4.2 定時(shí)器應(yīng)用舉例,sfr16 T2=0xcc;sfr T2MOD=0xc9;void main(){ RCAP2=64936;T2=64936;T2MOD=2;TR2=1;while(1); }匯編語(yǔ)言程序:ORG0000HLJMPMAIN,6.4.2 定時(shí)器應(yīng)用舉例,MAIN:MOV

69、T2MOD,#02H;T2工作在可編程時(shí)鐘輸出方式SETBTR2;T2定時(shí)且啟動(dòng)T2工作MOVRCAP2L,#0A8H;送計(jì)數(shù)初值的低8位MOVRCAP2H,#0FDH;送計(jì)數(shù)初值的高8位MOVTL2,#0A8HMOVTH2,#0FDHHERE:SJMPHERE;等待溢出END,本章小結(jié)本章首先總體簡(jiǎn)單介紹了MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)、工作原理和相關(guān)的寄存器。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論