版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 MCS-51的定時(shí)器/計(jì)數(shù)器 兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0。 2種工作模式: (1)計(jì)數(shù)器工作模式 (2)定時(shí)器工作模式 4種工作方式(方式0-方式3)。 6.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu) TMOD:選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作 方式。 TCON:控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了 T0、T1的狀態(tài)。,單片機(jī)復(fù)位時(shí),兩個(gè)寄存器都清0。 6.1.1 工作方式控制寄存器TMOD,8位分為兩組,高4位控制T1,低4位控制T0。 (1)GATE門控位 0:以TRX(X=0,1)來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。 1:用外中斷引腳(INT0*或INT1*)上的高電平和TRX兩
2、個(gè)條件來(lái)啟動(dòng)定時(shí)器/計(jì)數(shù)器運(yùn)行。 (2)M1、M0工作方式選擇位 M1 M0 工 作 方 式 0 0 方式0,13位定時(shí)器/計(jì)數(shù)器。 0 1方式1,16位定時(shí)器/計(jì)數(shù)器。 1 0 方式2,8位常數(shù)自動(dòng)重新裝載 1 1 方式3,僅適用于T0,T0分成兩個(gè)8 位計(jì)數(shù)器,T1停止計(jì)數(shù)。 (3) C/T*計(jì)數(shù)器模式和定時(shí)器模式選擇位,0:定時(shí)器模式。 1:計(jì)數(shù)器模式。 6.1.2 定時(shí)器/計(jì)數(shù)器控制寄存器TCON 低4位與外部中斷有關(guān),已介紹。高4位的功能如下: (1) TF1、TF0計(jì)數(shù)溢出標(biāo)志位 (2) TR1、TR0計(jì)數(shù)運(yùn)行控制位 1:?jiǎn)?dòng)定時(shí)器/計(jì)數(shù)器工作 0:停止定時(shí)器/計(jì)數(shù)器工作,6.2
3、定時(shí)器/計(jì)數(shù)器的4種工作方式 6.2.1 方式0 M1、M0為00 ,定時(shí)器/計(jì)數(shù)器的框圖:,為13位的計(jì)數(shù)器 ,C/T* 位決定工作模式: 0:開關(guān)打在上面,為定時(shí)器工作模式; 1:開關(guān)打在下面,為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4、P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。 GATE位:決定定時(shí)器/計(jì)數(shù)器的運(yùn)行取決于TRx一個(gè)條件還是TRx和INTx*引腳兩個(gè)條件。 (1)0:A點(diǎn)(見圖6-2)是否計(jì)數(shù),僅取決于TRx的狀態(tài)。 (2)1:B點(diǎn)電位由INTX*的輸入電平和TRX的狀態(tài)這兩個(gè)條件來(lái)確定。是否計(jì)數(shù)是由TRx和INTx*二個(gè)條件來(lái)控制的。,6.2.2 方式1
4、M1、M0=01,16位的計(jì)數(shù)器。 6.2.3 方式2 計(jì)數(shù)滿后自動(dòng)裝入計(jì)數(shù)初值。 M1、M0=10 ,等效框圖如下:,TLX作為常數(shù)緩沖器,當(dāng)TLX計(jì)數(shù)溢出時(shí),在置“1”溢出標(biāo)志TFX的同時(shí),還自動(dòng)的將THX中的初值送至TLX,使TLX從初值開始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的方式2工作過(guò)程如圖6-5(X=0,1)。,省去用戶軟件中重裝初值的程序,精確的定時(shí)。 6.2.4 方式3 增加一個(gè)附加的8位定時(shí)器/計(jì)數(shù)器,從而具有3個(gè)定時(shí)器/計(jì)數(shù)器。,只適用于定時(shí)器/計(jì)數(shù)器T0。T1不能工作在方式3, T1方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作串行口波特率產(chǎn)生器)。 1工作方式3下的T0 T
5、0分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器:TL0和TH0 。TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、,而TH0被固定為一個(gè)8位定時(shí)器(不能作外部計(jì)數(shù)模式),并使用定時(shí)器T1的狀態(tài)控制位TR1和TF1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。 各引腳與T0的邏輯關(guān)系如圖所示:,2T0工作在方式3下T1的各種工作方式 當(dāng)T1用作串行口的波特率發(fā)生器時(shí), T0才工作在方式3。 T0為方式3時(shí), T1可定為方式0、方式1和方式2,用來(lái)作為串行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。 (1)T1工作在方式0,(2) T1工作在方式1 (3) T1工作在方式2,6.3 定時(shí)器/計(jì)數(shù)器對(duì)輸入信號(hào)的要求 外部計(jì)數(shù)
6、脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。 輸入信號(hào)的高、低電平至少要保持一個(gè)機(jī)器周期。 如圖6-10所示,圖中Tcy為機(jī)器周期。,6.4 定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用 4種工作方式中,方式0與方式1基本相同,由于方式0是為兼容MCS-48而設(shè),初值計(jì)算復(fù)雜,在實(shí)際應(yīng)用中,一般不用方式0,而采用方式1。 6.4.1 方式1應(yīng)用 例6-1 假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz,要在P1.0上輸出一個(gè)周期為2ms的方波,如圖所示。,方波的周期用T0來(lái)確定,讓T0每隔1ms計(jì)數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對(duì)P
7、1.0取反。 (1)計(jì)算初值X 設(shè)初值為X,則有: (216-X)210-6=110-3 216-X=500 X=65036 X化為16進(jìn)制,即X=FE0CH=1111111000001100B。 所以,T0的初值為: TH0=0FEH TL0=0CH (2)初始化程序設(shè)計(jì),對(duì)寄存器IP、IE、TCON、TMOD的相應(yīng)位進(jìn)行正確設(shè)置,將計(jì)數(shù)初值送入定時(shí)器中。 (3)程序設(shè)計(jì) 中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器中,為下一次中斷作準(zhǔn)備。 參考程序: ORG 0000H RESET: AJMP MAIN ;轉(zhuǎn)主程序 ORG 000BH ;T0的中斷入口 AJMP IT0P ;
8、轉(zhuǎn)T0中斷處理程序IT0P ORG 0100H MAIN: MOV SP,#60H ;設(shè)堆棧指針 MOV TMOD,#01H ;設(shè)置T0為方式1,ACALL PT0M0;調(diào)用子程序PT0M0 HERE: AJMP HERE ;自身跳轉(zhuǎn) PT0M0: MOV TL0,#0CH;T0中斷服務(wù)程序,T0重新置初值 MOV TH0,#0FEH SETB TR0 ;啟動(dòng)T0 SETB ET0 ;允許T0中斷 SETB EA ;CPU開中斷 RET ITOP: MOV TL0,#0CH ;T0中斷服務(wù)子程序,T0置初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的狀態(tài)取反 RETI 查詢方式
9、的參考程序: MOV TMOD,#01H ;設(shè)置T0為方式1,SETB TR0 ;接通T0 LOOP: MOV TH0,#0FEH ;T0置初值 MOV TL0,# 0CH LOOP1:JNB TF0,LOOP1 ;查詢TF0標(biāo)志 CLR TR0 ;T0溢出,關(guān)閉T0 CPL P1.0 ;P1.0的狀態(tài)求反 SJMP LOOP 例6-2 假設(shè)系統(tǒng)時(shí)鐘為6MHz,編寫定時(shí)器T0產(chǎn)生1秒定時(shí)的程序。 (1)T0工作方式的確定 定時(shí)時(shí)間較長(zhǎng),采用哪一種工作方式? 由各種工作方式的特性,可計(jì)算出: 方式0最長(zhǎng)可定時(shí)16.384ms;,方式1最長(zhǎng)可定時(shí)131.072ms; 方式2最長(zhǎng)可定時(shí)512s。 選
10、方式1,每隔100ms中斷一次,中斷10次為1s。 (2)計(jì)算計(jì)數(shù)初值 因?yàn)椋?216-X)210-6 = 10-1 所以:X=15536=3CB0H 因此:TH0=3CH,TL0=B0H (3)10次計(jì)數(shù)的實(shí)現(xiàn) 采用循環(huán)程序法。 (4)程序設(shè)計(jì) 參考程序 :,ORG 0000H RESET: LJMP MAIN ;上電,轉(zhuǎn)主程序入口MAIN ORG 000BH ;T0的中斷入口 LJMP IT0P;轉(zhuǎn)T0中斷處理程序IT0P ORG 1000H MAIN: MOV SP,#60H ;設(shè)堆棧指針 MOV B,#0AH ;設(shè)循環(huán)次數(shù)10次 MOV TMOD,#01H ;設(shè)T0工作在方式1 MOV
11、 TL0,#0B0H ;給T0設(shè)初值 MOV TH0,#3CH SETB TR0 ;啟動(dòng)T0 SETB ET0 ;允許T0中斷,SETB EA ;CPU開放中斷 HERE: SJMP HERE ;等待中斷 ITOP: MOV TL0,#0B0H ;T0中斷子程序,重裝初值 MOV TH0,#3CH ; DJNZ B,LOOP CLR TR0 ;1s定時(shí)時(shí)間到,停止T0工作 LOOP: RETI 6.4.2 方式2的應(yīng)用 省去程序中重裝初值的指令,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間。 例6-3 當(dāng)T0(P3.4)引腳上發(fā)生負(fù)跳變時(shí),從P1.0引腳上輸出一個(gè)周期為1ms的方波,如圖所示。(系統(tǒng)時(shí)鐘為6MH
12、z),(1)工作方式選擇 T0為方式1計(jì)數(shù),初值 0FFFFH,即外部計(jì)數(shù)輸入端T0(P3.4)發(fā)生一次負(fù)跳變時(shí),T0加1且溢出,溢出標(biāo)志TF0置“1”,發(fā)中斷請(qǐng)求。在進(jìn)入T0中斷程序后,把F0標(biāo)志置“1”,說(shuō)明T0腳已接收了負(fù)跳變信號(hào)。 T1定義為方式2定時(shí)。在T0腳發(fā)生一次負(fù)跳變后,,啟動(dòng)T1每500s產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)P1.0求反,使P1.0產(chǎn)生周期1ms的方波。 (2)計(jì)算T1初值 設(shè)T1的初值為X: 則 (28-X)210-6=510-4 X=28-250=6=06H (3)程序設(shè)計(jì) ORG 0000H RESET: LJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 00
13、0BH JMP IT0P ;轉(zhuǎn)T0中斷服務(wù)程序,ORG 001BH LJMP IT1P ;轉(zhuǎn)T1中斷服務(wù)程序 ORG 0100H MAIN: MOV SP,#60H ACALL PT0M2 ;調(diào)用對(duì)T0,T1初始化子程序 LOOP: MOV C,F0 ;T0產(chǎn)生過(guò)中斷了嗎,產(chǎn)生過(guò) ;中斷,則F0=1 JNC LOOP;T0沒有產(chǎn)生過(guò)中斷,則跳到 ;LOOP,等待T0中斷 SETB TR1 ;啟動(dòng)T1 SETB ET1 ;允許T1中斷 HERE: AJMP HERE,PT0M2: MOV TMOD,#26H ;初始化,T1為方式2定 ;時(shí),T0為方式1計(jì)數(shù) MOV TL0,#0FFH ;T0置初
14、值 MOV TH0,#0FFH SETB TR0 ;啟動(dòng)T0 SETB ET0 ;允許T0中斷 MOV TL1,#06H ;T1置初值 MOV TH1,#06H CLR F0;把T0已發(fā)生中斷標(biāo)志F0清0 SETB EA RET IT0P: CLR TR0 ;T0中斷服務(wù)程序,停止T0計(jì)數(shù),SETB F0 ;建立產(chǎn)生中斷標(biāo)志 RETI IT1P: CPL P1.0;T1中斷服務(wù),P1.0位取反 RETI 在T1定時(shí)中斷服務(wù)程序IT1P中,省去了T1中斷服務(wù)程序中重新裝入初值06H的指令。 例6-4 利用T1的方式2對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿100個(gè)數(shù),將P1.0取反。 本例是方式2計(jì)數(shù)模式的應(yīng)
15、用。 (1)選擇工作方式,外部信號(hào)由T1(P3.5) 腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入100個(gè)脈沖,計(jì)數(shù)器產(chǎn)生溢出中斷,在中斷服務(wù)程序中將P1.0取反一次。 T1 方式2的控制字為TMOD=60H。不使用T0時(shí),TMOD的低4位可任取,但不能使T0進(jìn)入方式3,這里取全0。 (2)計(jì)算T1的初值 X=28-100=156=9CH 因此,TL1的初值為9CH,重裝初值寄存器TH1=9CH (3)程序設(shè)計(jì) ORG 0000H LJMP MAIN ORG 001BH;T1中斷服務(wù)程序入口,CPL P1.0;P1.0位取反 RETI ORG 0100H MAIN:MOV TMOD,#60H ;
16、設(shè)T1為方式2計(jì)數(shù) MOV TL0,#9CH ;T0置初值 MOV TH0,#9CH SETB TR1 ;啟動(dòng)T1 HERE: AJMP HERE 6.4.3 方式3的應(yīng)用 T0 方式3時(shí),TL0和TH0被分成兩個(gè)獨(dú)立的8位定時(shí)器/計(jì)數(shù)器。其中,TL0:8位定時(shí)器/計(jì)數(shù)器; TH0:8位定時(shí)器。,當(dāng)T1作串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式3。 例6-5 假設(shè)某MCS-51應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置T1工作在方式2,作波特率發(fā)生器用?,F(xiàn)要求增加一個(gè)外部中斷源,并控制P1.0引腳輸出一個(gè)5kHz的方波。設(shè)系統(tǒng)時(shí)鐘為6MHz。,(1)選擇工作方式 TL0為方式3計(jì)數(shù),把T0引腳(P3.
17、4)作附加的外中斷輸入端,TL0初值設(shè)為0FFH,當(dāng)檢測(cè)到T0引腳電平出現(xiàn)負(fù)跳變時(shí),TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。 TH0為8位方式3定時(shí),控制P1.0輸出5kHz的方波信號(hào)。如圖6-13所示。 (2)初值計(jì)算 TL0的初值設(shè)為0FFH。 5kHz的方波的周期為200s,TH0的定時(shí)時(shí)間為,100s。TH0初值X計(jì)算如下: (28-X)210-6=110-4 X=28-100=156=9CH (3)程序設(shè)計(jì) ORG 0000H LJMP MAIN ORG 000BH ;T0中斷入口 LJMP TL0INT;跳T0(TL0)中斷服務(wù)程序 ORG 001BH ;在T0方式3時(shí)
18、,TH0占用T1的中斷 LJMP TH0INT;跳TH0中斷服務(wù)程序 ORG 0100H,MAIN: MOV TMOD,#27H ;TL0方式3計(jì)數(shù),TH0定時(shí),T1方式2;定時(shí)(波特率發(fā)生器) MOV TL0,#0FFH ;置TL0初值 MOV TH0,#9CH;置TH0初值 MOV TL1,#dataL ;data為波特率常數(shù) MOV TH1,#dataH MOV TCON,#55H;允許T0中斷 MOV IE,#9FH;啟動(dòng)T1 中斷處理 TL0INT:MOV TL0,#0FFH ;TL0中斷服務(wù)程序, ;TL0重新裝入初值,中斷處理 TH0INT:MOV TH0,#9CH ;TH0中斷
19、服務(wù)程序,TH0重 ;新裝入初值 CPL P1.0 ;P1.0位取反輸出 RETI,6.4.4 門控制位GATE的應(yīng)用測(cè)量脈沖寬度 GATE1可使定時(shí)器/計(jì)數(shù)器T1的啟動(dòng)計(jì)數(shù)受INT1*的控制,可測(cè)量引腳INT1*(P3.3)上正脈沖的寬度(機(jī)器周期數(shù))。,參考程序: ORG 0000H RESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ; 90H為T1方式1定時(shí)控制字 MOV TL1,#00H MOV TH1,#00H LOOP0: JB P3.3,LOOP0;INT1*高,則循環(huán) SETB TR1;如INT1*為低,啟動(dòng)T1 LOOP1: JNB P3.3,LOOP1;INT1*低,則循環(huán) LOOP2: JB P3.3,LOOP2 ;INT1*高,T1計(jì)數(shù)則程序循環(huán),CLR TR1;INT1*低,停止T1計(jì)數(shù) MOV A,TL1;T1計(jì)數(shù)值送A 將A中的T1計(jì)數(shù) 值送顯示緩沖區(qū) 轉(zhuǎn)換成顯示的代碼 LOOP3: LCA
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024個(gè)人珠寶買賣合同范本
- 2024年度版權(quán)質(zhì)押合同:含版權(quán)內(nèi)容、質(zhì)押價(jià)值、質(zhì)權(quán)實(shí)現(xiàn)
- 旅游推廣合作合同實(shí)例
- 攝影棚居間服務(wù)合同樣本
- 房屋銷售合同模板手冊(cè)
- 樂團(tuán)合作合同范本大全
- 電子郵件服務(wù)租用協(xié)議
- 2024家教公司與兼職教師合作合同范本
- 企業(yè)房屋租賃合同范本
- 2024保密合同樣書范文
- 四川省食品生產(chǎn)企業(yè)食品安全員理論考試題庫(kù)(含答案)
- 機(jī)織服裝生產(chǎn)中的質(zhì)量控制體系建設(shè)考核試卷
- 病理學(xué)實(shí)驗(yàn)2024(臨床 口腔)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024年廣西安全員C證考試題庫(kù)及答案
- 期末測(cè)試卷(試題)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2024至2030年中國(guó)手機(jī)配件產(chǎn)業(yè)需求預(yù)測(cè)及發(fā)展趨勢(shì)前瞻報(bào)告
- 2024年小學(xué)閩教版全冊(cè)英語(yǔ)詞匯表
- 課題開題匯報(bào)(省級(jí)課題)
- 清真食品安全管理制度
- 學(xué)校心理健康教育合作協(xié)議書
- 2024江蘇省沿海開發(fā)集團(tuán)限公司招聘23人(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
評(píng)論
0/150
提交評(píng)論