




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MCS-51定時器/計數(shù)器第六章主講教師:趙曉安重點(diǎn)內(nèi)容1、定時/計數(shù)器結(jié)構(gòu)特點(diǎn)及控制2、定時/計數(shù)器及中斷系統(tǒng)綜合應(yīng)用62 MCS-51的定時器/計數(shù)器 在單片機(jī)實時應(yīng)用系統(tǒng)中,需要定時和對外部事件計數(shù)的功能 。定時:對周期已知的脈沖信號計數(shù)計數(shù):對外部事件計數(shù),對周期未知的外來脈沖信號計數(shù)定時方法: 采用軟件延時占用CPU的時間,降低了CPU的使用效率;定時或計數(shù)方法: 采用專門的硬件電路,參數(shù)調(diào)節(jié)不便; 采用可編程的定時器/計數(shù)器是最好的方法。 可以方便靈活地修改定時或計數(shù)的參數(shù)或方式 與CPU并行工作,大大提高了CPU的工作效 6.2 MCS-51的定時器/計數(shù)器6.2.1 定時器/計
2、數(shù)器的組成6.2.2定時器/計數(shù)器的控制6.2.3 定時器/計數(shù)器的四種工作方式6.2.4 T/C的初始化6.2.5 T/C的溢出校準(zhǔn)和實時讀取6.2.6 應(yīng)用舉例6.2.1 定時器/計數(shù)器的組成 Timer/ Counter MCS-51單片機(jī)內(nèi)部有二個16位的可編程的定時器/計數(shù)器: 定時器/計數(shù)器0(T/C0) 定時器/計數(shù)器1(T/C1) 它們都有定時和對外部事件計數(shù)的功能,可用于定時控制、延時、對外部事件檢測和計數(shù)等場合. 圖6-4 8051定時器結(jié)構(gòu)T/C0和T/C1的結(jié)構(gòu)及與CPU的關(guān)系定時器/計數(shù)器(T/C0和T/C1)的組成1、兩個獨(dú)立的16位加1計數(shù)器 T/C0由兩個8位的
3、TH0(8CH) 和TL0(8AH)組成 T/C1由TH1(8DH) 和TL1(8BH)組成2、兩個控制寄存器 TMOD:控制工作方式 TCON:控制3、兩根外來脈沖輸入端 T0(P3.4)為T/C0的 T1(P3.5)為T/C1的4、兩根外部啟動控制線 INT0 為控制T/C0的 INT1 為控制T/C1的1、定時方式 T/C計數(shù)8051內(nèi)部機(jī)器周期信號的個數(shù) ,由計數(shù)個數(shù)可以計算出定時時間 。 每個機(jī)器周期使T/C的計數(shù)器增加1,直至計滿回零后自動產(chǎn)生溢出中斷請求,表示定時時間到 。 f=12MHz, 一個機(jī)器周期是1 s定時方式與計數(shù)方式2、 計數(shù)方式 T/C計數(shù)來自引腳T0(P3.4)
4、和T1(P3.5)的外部脈沖信號的個數(shù)。 輸入脈沖由1變0的下降沿時,計數(shù)器的值增加1直到回零產(chǎn)生溢出中斷,表示計數(shù)已達(dá)預(yù)期個數(shù)。 最高計數(shù)頻率為振蕩頻率的1/24。即計數(shù)周期=2機(jī)器周期。6.2.1 定時器/計數(shù)器的控制 定時器/計數(shù)器的工作由TCON和TMOD控制 由軟件把控制字寫入TCON和TMOD,用來設(shè)置T/C0和T/C1的工作方式和控制功能。 當(dāng)8051系統(tǒng)復(fù)位時,TCON和TMOD所有位都被清0。 一、工作模式寄存器TMOD(89H) TMOD用于控制T/C0和T/C1的工作模式,其各位的定義格式如下: 其中,低4位用于T/C0,高4位用于T/C1。各位功能如下:一、工作模式控制
5、寄存器TMOD(89H)1M1和M0 工作方式選擇位這兩位可形成四種編碼,對應(yīng)四種工作方式: M1 M0 方式 功 能 描 述 0 0 0 為13位定時器/計數(shù)器,TL存放低5位,TH存高8位 0 1 1 為16位定時器/計數(shù)器 1 0 2 常數(shù)自動裝入8位定時器/計數(shù)器 1 1 3 僅適于T/C0,兩個8位定時器/計數(shù)器2 C/T 計數(shù)/定時選擇位 C/T 0, 設(shè)為定時方式,對機(jī)器周期計數(shù); C/T 1,設(shè)為計數(shù)方式,對來自T0或T1引腳的外來脈沖計數(shù)。 3GATE 門控位(控制啟動方式) GATE0時,T/C的啟動只要用軟件使TR0(或TR1)置1即可,而不管/INT0(或/INT1)的
6、電平是高還是低。 GATE1時,只有/INT0(或/INT1)引腳為高電平且由軟件使TR0(或TR1)置1時,才啟動T/C工作。 也就是T/C的啟動受雙重控制。注意:TMOD不能位尋址,只能由字節(jié)設(shè)置T/C的工作方式, 低半字節(jié)設(shè)定T/C0,高半字節(jié)設(shè)定T/C1。 二、控制寄存器 TCON(88H) 控制寄存器 TCON除可字節(jié)尋址外,各位還可位尋址。各位定義及格式如下: 1) TF1(TCON.7) T/C1的溢出標(biāo)志位。 當(dāng)T/C1被允許計數(shù)后,T/C1從初值開始加1計數(shù),回零時由高位產(chǎn)生溢出,由硬件自動置TF1為“1”,并向CPU請求中斷,當(dāng)CPU響應(yīng)并進(jìn)入中斷服務(wù)程序后,TF1又被硬件
7、自動清0。TF1也可以由程序查詢和清0。 2)TF0(TCON.5) T/C0溢出標(biāo)志位。其功能同TF1。 3) TR1(TCON.6) T/C1運(yùn)行控制位。 由軟件置位或復(fù)位。 當(dāng)GATE(TMOD.7)為0時, TR1 為1時,啟動T/C1計數(shù); TR1為0時, 停止T/C1計數(shù)。 4) TR0(TCON.4) T/C0運(yùn)行控制位。 其功能同TR1,只是GATE 為TMOD.3。 5) IE1、IT1、IE0、IT0(TCON.3TCON.0) 外部中斷INT1、INT0的中斷標(biāo)志位和申請信號的觸發(fā)方式控制位。二定時器控制寄存器TCON(88H)二定時器控制寄存器TCON(88H)6. 2
8、. 3 定時器的四種工作方式 TMOD中控制位C/T設(shè)置定時或計數(shù)功能 M1、M0位的設(shè)置選擇四種工作方式, 即方式0、方式1、方式2和方式3 方式0、1和2時,T/C0和T/C1的工作相同; 方式3時,T/C0和T/C1的工作不同。 高8位和低5位的一個13位計數(shù)器的運(yùn)行方式 當(dāng)TL1的低5 位溢出時,向TH1進(jìn)位,而TH1溢出(回零)時向TF1標(biāo)志進(jìn)位(硬件置位TF1),并申請中斷。還可以通過查詢TF1是否置位來判斷TH1是否回零溢出。 方式0 GATE TRx INTx 啟動情況 0 0 X 停止 0 1 X 啟動定時/計數(shù) 1 0 X 停止 1 1 啟動定時/計數(shù) 1 1 停止 其中:
9、 1 表示高電平,0表示低電平,X表示任意狀態(tài) 啟動控制 BTR1A TR1(INT1+GATE )舉例:利用GATE位測正脈沖的寬度 方式1是一個16為定時器/計數(shù)器,見圖6-7。 方式1的結(jié)構(gòu)幾乎與方式0完全一樣,唯一的差別是:方式1中的TH1(TH0)和TL1(TL0) 均是8位的,構(gòu)成16位計數(shù)器。方式1 在方式2時,T/C被拆成一個8位的寄存器TH1(TH0)和一個8位計數(shù)器TL1(TL0),兩者構(gòu)成可以自動重裝載的8位T/C,如圖6-8所示。 方式2方式2每當(dāng)它計滿回零時 一方面向CPU發(fā)出溢出中斷請求, 另一方面從TH1(或TH0)中重新獲得初值并啟動計數(shù); 也就是CPU 自動將
10、TH1(或TH0)中存放的初值重新裝回到TL1(或TL0),并在此初值的基礎(chǔ)上對TL1(或TL0)開始新一輪計數(shù),周而復(fù)始,直到下一個停止計數(shù)或更改工作方式命令為止。 方式3 方式3下T/C0和T/C1功能就不同了。此時,TH0和TL0按兩個獨(dú)立的8位計數(shù)器工作,如圖6-9所示。T/C1只能按不中斷的方式工作,常常利用它的定時功能作串行口波特率發(fā)生器,如圖6-10所示。 T/C0方式3時,TL0占用了T/C0的C/T、GATE、TR0、TF0、T0(P3.4)和INT0控制引腳 。 TH0只有簡單的內(nèi)部定時功能,它占用了T/C1的TR1控制位和TF1中斷標(biāo)志位,其啟動/關(guān)閉僅受TR1控制。 在
11、T/C0工作在方式3時,T/C1仍可設(shè)置為方式02。 由于TR1和TF1已被T/C0(TH0)占用,計數(shù)開關(guān)已被接通,此時僅用T/C1的C/T來切換其定時或計數(shù)工作方式就可使T/C1工作。 計數(shù)器(8位、13位或16位)回零溢出時,只能將輸出送入串行口或用于不需要中斷的場合。 一般情況下,當(dāng)T/C1用作串行口波特率發(fā)生器時,T/C0才設(shè)置為工作方式3。 此時,常把T/C1設(shè)置為方式2用作波特率發(fā)生器,見圖6-10 。6.2.3 T/C的初始化 1. 初始化的步驟 MCS-51內(nèi)部的T/C是可編程的,其工作方式和模式通過程序進(jìn)行設(shè)定和控制,稱為對T/C的初始化。初始化的步驟是: 1)確定工作方式
12、,即根據(jù)題目要求先給TMOD送一個方式控制字。 2)計算計數(shù)初值/定時初值,并寫入TH0、TL0或 TH1、TL1中。 3)根據(jù)需要,置位EA使CPU開放中斷,同時置位ETx允許T/C中斷。IP設(shè)定中斷優(yōu)先級。 4) 給TCON送命令控制字,即置位TRx啟動T/C計數(shù)。 2計數(shù)器初值的計算 T/C在計數(shù)模式下,計數(shù)之前必須給它的計數(shù)器TH0、TL0或TH1、TL1選送計數(shù)初值。T/C的計數(shù)器是在計數(shù)初值的基礎(chǔ)上加1計數(shù)的,當(dāng)計數(shù)器回“0”時自動產(chǎn)生溢出,置位TFx中斷標(biāo)志,向CPU 提出中斷請求。 設(shè)需要計數(shù)器計數(shù)的個數(shù)為 X,計數(shù)初值為C,由此可得出如下計算計數(shù)初值的通式: 計數(shù)初值: C
13、M - X (61)式中,M為計數(shù)器的模值,該值和計數(shù)器的工作方式有關(guān)。 當(dāng)方式0時 M 當(dāng)方式1時 (62) 當(dāng)方式2、3時3定時器初值計算 在定時模式下,計數(shù)器對單片機(jī)振蕩頻率fosc經(jīng)12分頻后的機(jī)器周期進(jìn)行加1計數(shù),用X表示計數(shù)個數(shù),M表示模,C表示定時初值, Tcy表示機(jī)器周期,則 1 Tcy 12/fosc,因此,定時時間T的計算公式為: T XTcy ( M-C)Tcy (63) 定時初值公式為: C M - T/ Tcy (64) 定時器的溢出率 1/T fosc/(12X) fosc/(12 (M-C) (65) 應(yīng)用舉例1 舉例2 GATE例6-2 利用T/C0方式0產(chǎn)生1
14、ms的定時,在P1.0引腳上輸出周期為2ms的方波。設(shè)單片機(jī)晶振頻率fosc 12MHZ。 解: (1)確定T/C0的工作方式 要在P1.0輸出周期為2ms的方波,只要使P10每隔1ms取反一次即可。 (2)送T/C0的方式控制字 (TMOD)00H,即T/C0定時,方式0,只由TR0啟動,因為T/C1不用,高4位取0。即: GATE C/T M1 M0 GATE C/T M1 M0 0 0 0 0 0 0 0 0 TR0 定時 方式0 , T/C1不用各位均取0 啟動 (3)計算定時初值 Tcy12/fosc12/(12106 )S1s 計數(shù)個數(shù) : X1ms/1s1000 定時初值: C(
15、 -X) 8192-1000 7192D 1C18H 11100000 11000B 高8位0E0H 低5 位18H TH0初值為0E0H,TL0初值為18H 。若采用方式1,16位,則 定時初值: C 65536-1000 64536 FC18H TH0初值為0FCH,TL0初值為18H 可以采用中斷或查詢兩種方式編寫程序。 1) 中斷方式: 當(dāng)T/C0定時溢出時,TF0被置1,申請中斷。編程使CPU采用響應(yīng)中斷方式輸出方波效率比較高。 程序清單: ORG 0000H AJMP MAIN ; 轉(zhuǎn)到主程序MAIN ORG 000BH AJMP TC0S ; 轉(zhuǎn)到T/C0的中斷服務(wù)程序TC0S主
16、程序: ORG 1000H MAIN: MOV SP,#6FH MOV TMOD ,#00H ;置T/C0為方式0,定時。 MOV TH0,#0E0H ;送計數(shù)初值 MOV TL0,#18H SETB ET0 ;T/C0允許中斷 SETB EA ;CPU開中斷 SETB TR0 ;啟動T/C0定時 HERE: SJMP HERE ;等待中斷中斷服務(wù)程序: ORG 1200H TC0S: MOV TH0,#0E0H ;重新裝入計數(shù)初值 MOV TL0,#18H CPL P1.0 ;輸出方波 RETI ;中斷返回 END (4) 編程方法 ORG 0000H MOV TMOD,#00H MOV T
17、H0,#0E0H MOV TL0,#18H SETB TR0 LOOP:JBC TF0,DO1 SJMP LOOP DO1:MOV TH0,#0E0H MOV TL0,#18H CPL P10 SJMP LOOP END 2) 查詢方式: 還可以使CPU采用查詢TF0的方式處理T/C0定時溢出,編程簡單,但效率較低。 程序中查詢采用JBC TF0,DO1 指令,目的是當(dāng)判到TF01后,必須用軟件復(fù)位TF0,為下次計數(shù)器回零溢出做好準(zhǔn)備,這條指令具有判TF0為1后清零的雙重功能。方式 最小定時 最大定時 0 11/fosc12 8192 1/fosc12 1 11/fosc12 655361/f
18、osc122、3 11/fosc12 2561/fosc12最大計數(shù)值例6-5 利用GATE門控位測量從INT1引腳輸入的正脈沖寬度。解:1. 確定工作方式 (1)送方式控制字(TMOD)1001 0000B90H ; T/C1定時,方式1 ,GATE1 。(2)計算初值 由于被測正脈沖寬度未知, 假設(shè)寬度= 65.536ms,fosc12MHz ,則: 計數(shù)個數(shù):X65536(最大) 定時初值:C65536-X65536-655360, (TH1)00H,(TL1)00H。 對P3.3(INT1)引腳輸入的脈沖采用查詢的方法。 P3.3 (INT1) 被測脈寬 置1 TR1 TH1TL1從0
19、開始計數(shù) 清0 TR1,停止T/C1計數(shù)圖6-12 脈沖測試原理(3)編程方法 ORG 0000HMAIN:MOV SP,#6F MOV TMOD,#90H MOV TL1,#00H MOV TH1,#00HLOOP:JB P3.3,LOOP SETB TR1LOOP1:JNB P3.3,LOOP1LOOP2:JB P3.3,LOOP2 CLR TR1 MOV 30H,TL1 MOV 31H,TH1 . ACALL Calc ;計算子程序略 ACALL DIR ;顯示子程序略 SJMP $ END 程序清單: 6.2.4 定時器/計數(shù)器的溢出校準(zhǔn)和實時讀取 為什么要對 定時器/計數(shù)器的溢出校準(zhǔn)
20、? 8051內(nèi)部定時器/計數(shù)器當(dāng)計數(shù)器回零溢出后, A 一方面置位TF0/TF1中斷標(biāo)志,申請中斷; A 另一方面,方式0、1、3在未再次裝入計數(shù)初值時,計數(shù)器會自動從0值重新開始計數(shù)。 如果要求反復(fù)計數(shù)或定時,由于CPU響應(yīng)中斷和重新裝入初值都需要時間,這樣會給計數(shù)或定時帶來誤差。 對于單級中斷的系統(tǒng),一般中斷延時可以忽略,但在時間上要求確實很嚴(yán)格的應(yīng)用場合,必須精確計入這些延時,這時需要對定時器溢出校準(zhǔn)。 若在單級中斷的系統(tǒng)中,CPU響應(yīng)中斷至少用3個機(jī)器周期,若有其它指令的延誤,則延誤時間不易計算??刹捎靡韵鲁绦蚨蝸硇?zhǔn)。例如,T/C1方式1,定時1MS中斷,fosc12MHz,則定時初
21、值為: 65536- 1MS/1s 65536-10000FC18H 既是-1000的補(bǔ)碼。校準(zhǔn)方法: CLR EA 1 ;禁止所有的中斷 CLR TR1 1 ;停止T/C1計數(shù)MOV A,#LOW(-1000+7)1 ;取低8位校準(zhǔn)碼ADD A,TL1 1 ;校準(zhǔn)碼加TL1中的當(dāng)前值MOV TL1,A 1 ;要重裝入的校準(zhǔn)后的低8位初值MOV A,#HIGH(-1000+7 ) 1 ;取高8位校準(zhǔn)碼ADDC A,TH1 1 ;校準(zhǔn)碼加TH1中的當(dāng)前值MOV TH1,A 1 ;要重裝入的校準(zhǔn)后的高8位初值SETB TR1 1 ;啟動T/C1(-1000+7+3+2+)擴(kuò)大計數(shù)個數(shù)和定時時間 例6-6 利用MCS-51單片機(jī)的T/C,產(chǎn)生電子時鐘的1S基時,并且由P1.7輸出2S的方波。Fosc12MHz。焦點(diǎn): 16位計數(shù)器最大定時65.536ms,要產(chǎn)生比這個時間長的定時,怎么辦? 1、兩個定時器級聯(lián) 2、硬件定時加軟件計數(shù)相結(jié)合。 一個T/C定時,回0溢出時,使P1.0輸出一個負(fù)脈沖送到另一個T/C的外部脈沖輸入端用以計數(shù)。 當(dāng)fosc12MHz時,最大時間可以達(dá)到: T (6553665536)1s 4294967296s 4294967.296ms 4294.967296S。若再與軟件計數(shù)相結(jié)合,會產(chǎn)生更長的時間。兩個T/C
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)村電商農(nóng)業(yè)信息化解決方案
- 深路塹施工方案
- 隧道洞口開挖施工方案
- 股份制重組解決方案公告
- 藝術(shù)涂料防腐施工方案
- 云計算資源規(guī)劃與分配手冊
- 幼兒園股份合同轉(zhuǎn)讓協(xié)議
- 武昌醫(yī)院東區(qū)施工方案
- 廠房獨(dú)立基礎(chǔ)施工方案
- 基坑監(jiān)測施工方案
- 常州2025年江蘇常州工程職業(yè)技術(shù)學(xué)院其他專技崗管理崗招聘筆試歷年參考題庫附帶答案詳解
- (一模)臨沂市2025屆高三高考第一次模擬考試政治試卷(含答案詳解)
- 2025年安徽職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫含答案
- 2025年中考百日誓師大會校長發(fā)言稿(二)
- 1.2男生女生課件(共15張)-2024-2025學(xué)年統(tǒng)編版道德與法治七年級下冊
- 2025年安徽審計職業(yè)學(xué)院單招職業(yè)技能測試題庫附答案
- 2025年共青科技職業(yè)學(xué)院單招職業(yè)技能測試題庫學(xué)生專用
- 2025年黑龍江林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫含答案
- 2025年01月吉林白山市長白朝鮮族自治縣事業(yè)單位公開招聘工作人員(含專項)和邊境村穩(wěn)邊固邊工作專干84人(1號)筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025河南中煙許昌卷煙廠招聘10人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年寧波市水務(wù)環(huán)境集團(tuán)有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論