單片機(jī)原理及應(yīng)用(第6章 ) 89C51的定時(shí)器、計(jì)數(shù)器_第1頁
單片機(jī)原理及應(yīng)用(第6章 ) 89C51的定時(shí)器、計(jì)數(shù)器_第2頁
單片機(jī)原理及應(yīng)用(第6章 ) 89C51的定時(shí)器、計(jì)數(shù)器_第3頁
單片機(jī)原理及應(yīng)用(第6章 ) 89C51的定時(shí)器、計(jì)數(shù)器_第4頁
單片機(jī)原理及應(yīng)用(第6章 ) 89C51的定時(shí)器、計(jì)數(shù)器_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第6 6章章 89C5189C51的定時(shí)器的定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器&兩個(gè)可編程的定時(shí)器兩個(gè)可編程的定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1T1、T0T0。& 2 2種種工作模式工作模式:。(1 1)計(jì)數(shù)器計(jì)數(shù)器工作模式工作模式(2 2)定時(shí)器定時(shí)器工作模式工作模式& 4 4種種工作方式工作方式( (方式方式0-0-方式方式3 35.1 5.1 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的結(jié)構(gòu)與工作原理計(jì)數(shù)器的結(jié)構(gòu)與工作原理加一計(jì)數(shù)器加一計(jì)數(shù)器5.2 5.2 定時(shí)計(jì)數(shù)器的控制與工作方式(寄存器定時(shí)計(jì)數(shù)器的控制與工作方式(寄存器TMODTMOD、TCONTCON) M1M2 0 0 方式方式0 (1

2、3位位) 0 1 方式方式1 (16位位) 1 0 方式方式2(8位位,自動(dòng)自動(dòng)重裝重裝) 1 1 方式方式3(T0,2個(gè)個(gè)8位位)計(jì)數(shù)器模式和定計(jì)數(shù)器模式和定時(shí)器模式選擇位時(shí)器模式選擇位0:定時(shí)器模式。定時(shí)器模式。1:計(jì)數(shù)器模式。計(jì)數(shù)器模式。 門控位門控位 0:僅:僅以以TRX(X=0,1)來來啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。1:用引腳用引腳INT0* (或或INT1*)來啟動(dòng)定時(shí)器來啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。計(jì)數(shù)器運(yùn)行。1、控制、控制 (1)TF1、TF0計(jì)數(shù)溢出標(biāo)志位計(jì)數(shù)溢出標(biāo)志位(2) TR1、TR0定時(shí)計(jì)數(shù)運(yùn)行控制位定時(shí)計(jì)數(shù)運(yùn)行控制位1:啟動(dòng)啟動(dòng) 0:停止停止 IT0/I

3、T1選擇外中斷請求選擇外中斷請求 IT0=0 為為電平觸發(fā)電平觸發(fā)方式。方式。IT0=1 為為跳沿觸發(fā)跳沿觸發(fā)方式。方式。 可由軟件置可由軟件置“1”或清或清“0”。 IE0=0、IE1=0 無外部中斷請求無外部中斷請求。IE0=1、 IE1=1,外部中斷外部中斷0、1有中斷請求。有中斷請求。當(dāng)當(dāng)CPU響應(yīng)該中斷,轉(zhuǎn)向中斷服務(wù)程序時(shí),響應(yīng)該中斷,轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件清由硬件清“0”IE0。 2 2、4 4種工作方式種工作方式 方式方式0 0 M1M1、M0M0為為00 00 ,定時(shí)器,定時(shí)器/ /計(jì)數(shù)器的框圖:計(jì)數(shù)器的框圖: 方式方式1 1 M1M1、M0M0=01=01,1616位位的

4、計(jì)數(shù)器的計(jì)數(shù)器 方式方式2 2 M1M1、M0=M0=1010 計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值 , , 等效框圖如下:等效框圖如下: 方式方式2工作過程圖工作過程圖定時(shí)器定時(shí)器/ /計(jì)數(shù)器的方式計(jì)數(shù)器的方式2 2工作過程如圖工作過程如圖6-6-7(X=0,1)7(X=0,1)。省去用戶軟件中重裝初省去用戶軟件中重裝初值的程序,精確的定時(shí)。值的程序,精確的定時(shí)。圖圖6-76-7 4 4 方式方式3 3 &方式方式3 3中中 T0 T0分成兩個(gè)的分成兩個(gè)的8 8位定時(shí)器位定時(shí)器/ /計(jì)數(shù)計(jì)數(shù)器器: :TL0TL0、TH0TH0與與T1T1構(gòu)成構(gòu)成3 3個(gè)定時(shí)器個(gè)定時(shí)器/

5、/計(jì)數(shù)器。計(jì)數(shù)器。& 方式方式3 3只適用于只適用于 T0T0,不適用于,不適用于T1T1, 若若T1T1工工作于方式作于方式3 3時(shí)相當(dāng)于時(shí)相當(dāng)于TR1=0TR1=0,停止計(jì)數(shù)。停止計(jì)數(shù)。& 方式方式3 3時(shí)時(shí)T1T1可工作于方式可工作于方式0 0、方式、方式1 1和方式和方式2 2,作波特率發(fā)生器(或不需中斷的場合)作波特率發(fā)生器(或不需中斷的場合)1 1) ) 工作方式工作方式3 3下的下的T0T0 T0T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器: :TL0TL0、TH0TH0 4 方式方式3T0T0為方式為方式3 3時(shí)時(shí) F T1T1可定為方式可定為方式0

6、0、方式、方式1 1和方式和方式2 2 F 用作串行口的波特率發(fā)生器用作串行口的波特率發(fā)生器(Baud rate generator ),即作為串口數(shù)據(jù)傳送時(shí)的時(shí)鐘信號。F 或不需要中斷的場合(因?yàn)榛虿恍枰袛嗟膱龊希ㄒ驗(yàn)門F0TF0、TF1TF1 均被均被T0T0占用)。占用)。(1 1)T1T1工作在方式工作在方式0 0 2 2) )工作在方式工作在方式3 3下的下的T1T1 (2 2) T1T1工作在方式工作在方式1 1 (3 3) T1T1工作在方式工作在方式2 2 INT0INT1T0T1和中斷系統(tǒng)的連接P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT15.

7、3 5.3 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用1 1)、編程步驟:)、編程步驟:(1 1)設(shè)置工作方式)設(shè)置工作方式(2 2)裝入計(jì)數(shù))裝入計(jì)數(shù)初值初值(3 3)開中斷)開中斷(4 4)啟動(dòng)計(jì)數(shù))啟動(dòng)計(jì)數(shù)1、初始化、初始化(1)計(jì)數(shù)時(shí)的初值計(jì)算:)計(jì)數(shù)時(shí)的初值計(jì)算:X=M(模值)(模值)-要計(jì)數(shù)的值要計(jì)數(shù)的值(2)定時(shí)時(shí)的計(jì)數(shù)初值計(jì)算:)定時(shí)時(shí)的計(jì)數(shù)初值計(jì)算:X=M(模值)(模值)-定時(shí)時(shí)間(要計(jì)數(shù)的時(shí)間)定時(shí)時(shí)間(要計(jì)數(shù)的時(shí)間)/定時(shí)脈沖周期定時(shí)脈沖周期 ( 每計(jì)一次數(shù)的時(shí)間)每計(jì)一次數(shù)的時(shí)間)* 注:定時(shí)脈沖周期注:定時(shí)脈沖周期=12/fosc 定時(shí)、計(jì)數(shù)的初值計(jì)算:定

8、時(shí)、計(jì)數(shù)的初值計(jì)算: 舉例說明計(jì)數(shù)初值的計(jì)算假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6 6MHzMHz,要求產(chǎn)生要求產(chǎn)生10ms10ms定時(shí),試定時(shí),試分別計(jì)算定時(shí)器在方式分別計(jì)算定時(shí)器在方式0、1、2時(shí)的初值。時(shí)的初值。X = X = 2 21 13 3 10ms10ms(12126Mhz) = = 2 21 13 3-5000-5000 =3192D =3192D X X = = 2 28 8 10ms10ms(12126Mhz) = = 2 28 8 -5000-5000 =-4744=-4744 說明不能采用方式說明不能采用方式2 2產(chǎn)生產(chǎn)生10ms10ms 定定時(shí)。時(shí)。 X = 21

9、6 10ms(126Mhz) = 216 -5000 =60536D = 0EC78 (1)方式方式0的初值的初值X(2)方式方式1的初值的初值X(3)方式)方式2的初值的初值X 2)、最大定時(shí)時(shí)間的計(jì)算假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6 6MHzMHz,試分別計(jì)算定試分別計(jì)算定時(shí)器在方式時(shí)器在方式0 0、1 1、2 2時(shí)的最大定時(shí)時(shí)間。時(shí)的最大定時(shí)時(shí)間。 分析分析 X=M(模值)(模值)-定時(shí)時(shí)間定時(shí)時(shí)間 /定時(shí)脈沖周期定時(shí)脈沖周期 ,式中式中X=0.即:定時(shí)時(shí)間即:定時(shí)時(shí)間max =M定時(shí)脈沖周期定時(shí)脈沖周期 ,故:故:(1)方式)方式0的最大定時(shí)時(shí)間:的最大定時(shí)時(shí)間:T= 2 2

10、1 13 3 12126Mhz=16.384msms(2)方式)方式1的最大定時(shí)時(shí)間:的最大定時(shí)時(shí)間:T= 2 21 16 6 12126Mhz=131.027msms(3)方式)方式2的最大定時(shí)時(shí)間:的最大定時(shí)時(shí)間:T= 2 28 8 12 126Mhz= 512us512us 4 4)、)、初始化編程舉例例例5-15-1 T1 T1、方式方式1、定時(shí)定時(shí)50ms,50ms,軟件啟動(dòng)、允許中斷(設(shè)軟件啟動(dòng)、允許中斷(設(shè)fosc=12MHZ),fosc=12MHZ),編寫初始化程序段編寫初始化程序段P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT11 1、編程步驟:、

11、編程步驟:(1 1)設(shè)置工作方式)設(shè)置工作方式(2 2)裝入計(jì)數(shù))裝入計(jì)數(shù)初值初值(3 3)開中斷()開中斷(位編位編程或字節(jié)編程)程或字節(jié)編程)(4 4)啟動(dòng)計(jì)數(shù))啟動(dòng)計(jì)數(shù)例例5-25-2 計(jì)數(shù)器計(jì)數(shù)器T0T0對對T0T0引腳(引腳(P3.4)P3.4)出現(xiàn)的脈沖計(jì)數(shù),每計(jì)出現(xiàn)的脈沖計(jì)數(shù),每計(jì)數(shù)數(shù)100100個(gè)脈沖向個(gè)脈沖向CPUCPU中斷一次、中斷一次、設(shè)用軟件啟動(dòng),設(shè)用軟件啟動(dòng),編寫初始編寫初始化程序段。化程序段。P3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT11 1、編程步驟:、編程步驟:(1 1)設(shè)置工作方式)設(shè)置工作方式(2 2)裝入計(jì)數(shù))裝入計(jì)數(shù)初值初

12、值(3 3)開中斷()開中斷(位編位編程或字節(jié)編程)程或字節(jié)編程)(4 4)啟動(dòng)計(jì)數(shù))啟動(dòng)計(jì)數(shù)計(jì)數(shù)時(shí)的初值計(jì)算:計(jì)數(shù)時(shí)的初值計(jì)算:X=M(模值)(模值)-要計(jì)數(shù)的數(shù)值要計(jì)數(shù)的數(shù)值 分配存儲(chǔ)空間分配存儲(chǔ)空間 主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 X X= = 2 21616 10ms10ms(121212Mhz) = = 2 21616 -10000-10000 =55536=55536 =0D8F0H =0D8F0H 所以所以: :T0T0的初值為的初值為: TH0=D8TH0=D8H H TL0=TL0=F0HF0H 例例5-3(定時(shí)):(定時(shí)): T0定時(shí),在定時(shí),在P1.7輸出輸出50

13、HZ (20ms)方波,方波,設(shè)晶振頻率設(shè)晶振頻率12MHZ(分別(分別 采用中斷采用中斷、查詢方式編程)、查詢方式編程)主程序:主程序: 設(shè)置工作方式設(shè)置工作方式 裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值 開中斷開中斷 啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù) 等待中斷請求等待中斷請求 2、定時(shí)、定時(shí)/計(jì)數(shù)應(yīng)用舉例計(jì)數(shù)應(yīng)用舉例(定時(shí)定時(shí)/計(jì)數(shù)舉例)計(jì)數(shù)舉例)(1)計(jì)算初值計(jì)算初值X(2) 程序設(shè)計(jì)(觀察下頁圖)程序設(shè)計(jì)(觀察下頁圖) ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG 000BHORG 000BH AJMPAJMP IT0PIT0P ORGORG 0100H0100HMAINMA

14、IN: : MOV SP,#60HMOV SP,#60H MOV TMOD,#01H MOV TMOD,#01H MOV TL0 MOV TL0,#0F0H,#0F0H MOV TH0MOV TH0,#0D8H,#0D8H SETB SETB TR0 TR0 SETB ET0 SETB ET0 SETB EA SETB EA HERE: AJMP HEREHERE: AJMP HERE ITOP:ITOP: MOV TL0 MOV TL0,#0F0H,#0F0H MOV TH0MOV TH0,#0D8H,#0D8H CPL CPL P1.7P1.7 RETIRETI ENDEND數(shù)時(shí)間)定時(shí)脈

15、沖周期(每次計(jì)間)定時(shí)總時(shí)間(總計(jì)數(shù)時(shí) 2MXP3.4 T0P3.5 T1TR0TR1P3.2 INT0P3.3 INT1TL0 TH0TF0設(shè)置設(shè)置T0工作方式工作方式裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值開中斷開中斷啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù) 000BPC跳轉(zhuǎn)到主程序跳轉(zhuǎn)到主程序0000 0001 跳轉(zhuǎn)到跳轉(zhuǎn)到INT00003跳轉(zhuǎn)到跳轉(zhuǎn)到T1 001B跳轉(zhuǎn)到跳轉(zhuǎn)到T0000B 跳轉(zhuǎn)到跳轉(zhuǎn)到INT10013 串口中斷串口中斷0023 例例5-4(計(jì)數(shù)):(計(jì)數(shù)): 計(jì)數(shù)計(jì)數(shù)/定時(shí)器定時(shí)器T1對對T1引腳計(jì)數(shù),引腳計(jì)數(shù),每計(jì)數(shù)每計(jì)數(shù)100個(gè)脈沖,個(gè)脈沖,在在P1.0輸出一個(gè)正脈沖輸出一個(gè)正脈沖 。X X= = 2 2

16、8 8 100100 = = 156 156 = 9CH= 9CH 主程序:主程序: 設(shè)置工作方式設(shè)置工作方式 裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值 開中斷開中斷 使使P1.0P1.0輸出輸出0 0電平電平 啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù) 等待中斷請求等待中斷請求 分配存儲(chǔ)空間分配存儲(chǔ)空間 主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 (1)計(jì)算初值計(jì)算初值X(2)程序設(shè)計(jì)程序設(shè)計(jì) ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG ORG 001BH001BH AJMPAJMP IT1PIT1P ORGORG 0100H0100HMAINMAIN: : MOV SP,#60HMOV SP

17、,#60H MOV TMOD,#01H MOV TMOD,#01H MOV TL0 MOV TL0,#9CH,#9CH MOV TH0MOV TH0,#9CH,#9CH SETB SETB ET1ET1 SETB EA SETB EA CLR P1.0CLR P1.0 SETB TR1 SETB TR1 HERE: AJMP HEREHERE: AJMP HERE IT1PIT1P: : SETB P1.0SETB P1.0 NOPNOP NOPNOP CLR P1.0CLR P1.0 RETIRETI END END (2)程序設(shè)計(jì)程序設(shè)計(jì) (1)計(jì)算初值計(jì)算初值X 分配存儲(chǔ)空間分配存儲(chǔ)空間

18、 主程序主程序 中斷服務(wù)程序中斷服務(wù)程序 ORG 0000H LJMP MAIN ORG 000BH LJMP DVT0 ORG 0030H 主程序:主程序: 設(shè)置工作方式設(shè)置工作方式 裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值 開中斷開中斷 設(shè)置中斷次數(shù)設(shè)置中斷次數(shù) 使使P1P1口口D0D0燈亮燈亮 啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù) 等待中斷請求等待中斷請求 MAIN:MOV SP,#60H MOV TMOD,#01H MOV TH0,#9EH MOV TL0,#58HSETB ET0 SETB EA R2,#20H MOV A,#0FEHMOV P1,ASETB TR0 SJMP $ DVT0: DJNZ R2, RTN

19、RL AMOV P1,A MOV R2,#20RTN:MOV TH0,#9EH MOV TL0,#58HRETI END 設(shè)置工作方式設(shè)置工作方式 裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值開中斷開中斷 啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù) (2)程序設(shè)計(jì)程序設(shè)計(jì) (1)計(jì)算初值計(jì)算初值X=0000H 分配存儲(chǔ)空間分配存儲(chǔ)空間 主程序主程序 T0P3.4INT0 TF1主程序:主程序: 設(shè)置工作方式設(shè)置工作方式 裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值開中斷開中斷(無需開中斷)(無需開中斷) 設(shè)置存儲(chǔ)脈沖寬度的地址指針設(shè)置存儲(chǔ)脈沖寬度的地址指針 等待等待INT0INT0變低變低 開啟開啟TR0(TR0(并未啟動(dòng)計(jì)數(shù))并未啟動(dòng)計(jì)數(shù)) INT0 INT0一旦變高,則啟動(dòng)計(jì)數(shù)一旦變高,則啟動(dòng)計(jì)數(shù) INT0 INT0一旦變低,則停止計(jì)數(shù)一旦變低,則停止計(jì)數(shù) INTO=0 INTO=0則將計(jì)數(shù)器則將計(jì)數(shù)器TL0TH0TL0TH0存于指定存儲(chǔ)單元存于指定存儲(chǔ)單元查詢查詢INT0=0實(shí)例 設(shè)89C51單片機(jī)的工作頻率為6Mhz,利用T0中斷擴(kuò)展方式產(chǎn)生1s定時(shí),當(dāng)1s定時(shí)到,從P1.0輸出低電平點(diǎn)亮發(fā)光二極管,每產(chǎn)生一次中斷,P1.7取反一次。電路圖12MHzC230pC130pXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/A

溫馨提示

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

最新文檔

評論

0/150

提交評論