版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第6章AT89C51的定時器/計數(shù)器
6.1定時器/計數(shù)器的結(jié)構(gòu)兩個可編程的定時器/計數(shù)器T1、T0。結(jié)構(gòu)如圖6-1所示
2種工作模式:(1)計數(shù)器工作模式(2)定時器工作模式4種工作方式(方式0-方式3)。TMOD:選擇定時器/計數(shù)器T0、T1的工作模式和工作方式。TCON:控制T0、T1的啟動和停止計數(shù),同時包含了
T0、T1的狀態(tài)。單片機復(fù)位時,兩個寄存器都清0。6.1.1工作方式控制寄存器TMOD
圖6-1AT89C51單片機的定時器/計數(shù)器結(jié)構(gòu)框圖圖6-2TMOD格式8位分為兩組,高4位控制T1,低4位控制T0。(1)GATE——門控位
0:僅以TRX(X=0,1)來啟動定時器/計數(shù)器運行。
1:用引腳INT0*(或INT1*)上的高電平和TRX兩個條件來控制定時器/計數(shù)器的運行。(2)M1、M0——工作方式選擇位
表6-1M1、M0工作方式選擇
M1M0工作方式
00 方式0,13位定時器/計數(shù)器。01 方式1,16位定時器/計數(shù)器。10 方式2,8位常數(shù)自動重新裝載11 方式3,僅適用于T0,T0分成兩個8 位計數(shù)器,T1停止計數(shù)。
(3)C/T*——計數(shù)器模式和定時器模式選擇位
0:定時器模式。 1:計數(shù)器模式。6.1.2定時器/計數(shù)器控制寄存器TCON字節(jié)地址為88H,可位尋址,位地址為88H~8FH。TCON的格式如圖6-3所示。
圖6-3TCON格式低4位與外部中斷有關(guān),已介紹。高4位的功能如下:
(1)TF1、TF0——計數(shù)溢出標(biāo)志位(2)TR1、TR0——計數(shù)運行控制位 1:啟動定時器/計數(shù)器工作的必要條件。
0:停止定時器/計數(shù)器工作該位可由軟件置“1”或清“0”。6.2定時器/計數(shù)器的4種工作方式
6.2.1方式0
M1、M0為00,定時器/計數(shù)器的框圖:
圖6-4定時器/計數(shù)器方式0邏輯結(jié)構(gòu)框圖定時器計數(shù)器GATE為0,A點是否計數(shù)僅取決于TRX。GATE為1,B點電位由INTX*和TRX共同決定。定時器/計數(shù)器工作在方式0時,為13位的計數(shù)器,C/T*
位決定工作模式:
0:開關(guān)打在上面,為定時器工作模式; 1:開關(guān)打在下面,為計數(shù)器工作模式,計數(shù)脈沖為P3.4、P3.5引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時,計數(shù)器加1。GATE位:決定定時器/計數(shù)器的運行取決于TRx一個條件還是TRx和INTx*引腳兩個條件。(1)0:A點(見圖6-2)是否計數(shù),僅取決于TRx的狀態(tài)。(2)1:B點電位由INTX*的輸入電平和TRX的狀態(tài)這兩個條件來確定。是否計數(shù)是由TRx和INTx*二個條件來控制的。定時和計數(shù)應(yīng)用方式0下,計數(shù)工作方式時,計數(shù)范圍是1~8192。定時工作方式時,定時時間的計算公式為:(213-計數(shù)初值)×機器周期晶振頻率為6MHZ
最小定時時間為:[213-(213-1)×2×10-6=2us最大定時時間為:(213-0)×2×10-6=16384×10-6(S)=16384us例:單片機晶振頻率為6MHZ,使用定時器1方式0產(chǎn)生周期為500us的等寬正方波脈沖,并由P1.0輸出,以查詢完成。①計算初值(213-X)×2×10-6=256×10-6X=8067=1F83H=0001111110000011BX=1111110000011B
TH1=FCHTL1=03H(低5位)②TMOD初始化M1M0=00C/T*=0(定時)GATE=0,定/計為0不用,TMOD00H③TCONTR1TR1=1啟動TR0=0停止④程序設(shè)計:MOVTMOD,#00H;設(shè)置T1工作方式0MOVTH1,#0FCH;設(shè)置計數(shù)初值MOVTL1,#03H;MOVIE,#00H;禁止中斷SETBTR1;啟動定時LOOP:JBCTF1,LOOP1;查詢計數(shù)溢出,為1轉(zhuǎn)移并清0AJMPLOOPLOOP1:MOVTH1,#0FCH;重新設(shè)置計數(shù)初值MOVTL1,#03HCLRTF1;計數(shù)溢出標(biāo)志位清0CPLP1.0;輸出取反AJMPLOOP
6.2.2方式1
M1、M0=01,16位的計數(shù)器。
圖6-5定時器/計數(shù)器方式1邏輯結(jié)構(gòu)框圖方式1與方式0的差別僅在于計數(shù)器的位數(shù)不同,方式1為16位計數(shù)器,作為定時使用時,其定時時間為:
(216-T0初值)×機器周期計數(shù)范圍時1~65536(216)晶振頻率為6MHZ
最小定時時間為:[216-(216-1)]×2×10-6=2us最大定時時間為:(216-0)×2×10-6=131072×10-6(S)=131072us≈131ms例:題目同方式0,但以中斷方式完成。晶振頻率時6MHZ,使用定時器1以工作方式1產(chǎn)生周期為500us等寬正方波脈沖,并在P1.0端輸出。①計算初值(216-X)×2×10-6=250×10-6TH0=FFHTL0=A1H②TMOD寄存器初始化TMOD=10H③程序設(shè)計:MOVTMOD,#10H;定時器1工作方式1MOVTH1,#0FFH;設(shè)置計數(shù)初值MOVTL1,#0A1HSETBEASETBET1LOOP:SETBTR1HERE:SJMP$;等待中斷AJMPLOOP中斷服務(wù)程序:MOVTH1,#0FFHMOVTL1,#0A1HCPLP1.0;輸出取反RETI
圖6-6定時器/計數(shù)器方式2邏輯結(jié)構(gòu)框圖6.2.3方式2
計數(shù)滿后自動裝入計數(shù)初值。
M1、M0=10,等效框圖如下:
TLX作為常數(shù)緩沖器,當(dāng)TLX計數(shù)溢出時,在置“1”溢出標(biāo)志TFX的同時,還自動的將THX中的初值送至TLX,使TLX從初值開始重新計數(shù)。定時器/計數(shù)器的方式2工作過程如圖6-7(X=0,1)。省去用戶軟件中重裝初值的程序,來精確定時并簡化定時初值的計算方法。。圖6-7方式2工作過程省去用戶軟件中重裝初值的程序,來精確定時并簡化定時初值的計算方法。
在方式2中,16位計數(shù)器被分成兩個部分:TL0用作8位計數(shù)器,TH0作預(yù)置寄存器,保存預(yù)置初值。初始化時由軟件賦予TH0與TL0同樣的值。當(dāng)計數(shù)溢出后,便置位TF0,并將TH0的初值再裝入TL0,從而進(jìn)行新一輪計數(shù),如此循環(huán)重復(fù)不止。計數(shù)值最大只能到255。TH以硬件方法自動給計數(shù)器TL重新加載。例1:使用定時器0以工作方式2產(chǎn)生100us定時,在P1.0輸出周期為200us的連續(xù)波。fosc=6MHZ①計算初值(28-X)×2×10-6X=206D=11001110B=CEH
把CEH分別裝入TH0和TL0中:TH0=CEH,TL0=CEH②TMOD寄存器初始化M1M0=10,C/T*=0GATE=0定時器/計數(shù)器1不用,有關(guān)設(shè)定位為0;TMOD=02H③程序(查詢方式)
MOVIE,#00H;禁止中斷
MOVTMOD,#02H;設(shè)置定時器0為方式2MOVTH0,#CEH;設(shè)置計數(shù)初值MOVTL0,#CEH;設(shè)置計數(shù)初值SETBTR0;啟動定時LOOP:JBCTF0,LOOP1;查詢計數(shù)溢出AJMPLOOPLOOP1:CPLP1.0;輸出方波AJMPLOOP;重復(fù)循環(huán)由于方式2具有自動裝載功能,計數(shù)初值只能設(shè)置一次。④程序(中斷方式)
主程序:MOVTMOD,#02H;定時器0工作方式2MOVTH0,#CEH;設(shè)置計數(shù)初值MOVTL0,#CEH;保存計數(shù)初值SETBEA;開中斷SETBET0;定時器0允許中斷LOOP:SETBTR0;開始定時HERE:SJMP$CLRTF0;計數(shù)溢出標(biāo)志位清0AJMPLOOP
中斷服務(wù)程序:CPLP1.0;輸出方波RETI;中斷返回例2:用定時器1以工作方式2計數(shù),每計100次進(jìn)行累加器加1操作。①計算計數(shù)初值28-100=156D=9CHTH1=9CH,TL1=9CH②TMOD寄存器初始化M1M0=10C/T*=1,GATE=0TMOD=60H③程序設(shè)計
MOVIE,#00H;禁止中斷MOVTMOD,#60H;設(shè)置計數(shù)器1方式2MOVTH1,#9CH;設(shè)置計數(shù)初值MOVTL1,#9CH;設(shè)置計數(shù)初值SETBTR1;啟動計數(shù)DEL:JBCTF1,LOOP;查詢計數(shù)溢出AJMPDELLOOP:INCA;累加器加1AJMPDEL;循環(huán)返回6.2.4方式3
增加一個附加的8位定時器/計數(shù)器,從而具有3個定時器/計數(shù)器。只適用于定時器/計數(shù)器T0。T1不能工作在方式3。T1方式3時相當(dāng)于TR1=0,停止計數(shù)(此時T1可用來作串行口波特率產(chǎn)生器)。1.工作方式3下的T0T0分為兩個獨立的8位計數(shù)器:TL0和TH0。TL0使用T0的狀態(tài)控制位C/T*、GATE、TR0、,而TH0被固定為一個8位定時器(不能作外部計數(shù)模式),并使用定時器T1的狀態(tài)控制位TR1和TF1,同時占用定時器T1的中斷請求源TF1。
各引腳與T0的邏輯關(guān)系如圖6-8所示:
(a)TL0作為8位定時器/計數(shù)器(b)TH0作為8位定時器圖6-8定時器/計數(shù)器T0方式3的邏輯結(jié)構(gòu)框圖2.T0工作在方式3下T1的各種工作方式
當(dāng)T1用作串行口的波特率發(fā)生器時,T0才工作在方式3。T0為方式3時,T1可定為方式0、方式1和方式2,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。(1)T1工作在方式0
圖6-9T0工作在方式3時T1為方式0的工作示意圖(2)T1工作在方式1
。M1、M0=01時,工作在方式1(3)T1工作在方式2
圖6-10T0工作在方式3時T1為方式1的工作示意圖圖6-11T0工作在方式3時T1為方式2的工作示意圖M1、M0=10時,工作在方式2(4)T1工作在方式3。T1的控制字中M1、M0
=
11時,T1停止計數(shù)。在T0為方式3時,T1運行的控制條件只有兩個,即C/T*和M1、M0。C/T*選擇定時器模式或計數(shù)器模式,M1、M0選擇T1運行的工作方式。6.3計數(shù)器模式對輸入信號的要求
外部計數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24,例如選用12MHz頻率的晶體,則可輸入500KHz的外部脈沖。輸入信號的高、低電平至少要保持一個機器周期。如圖6-12所示,圖中Tcy為機器周期。若選用6MHz頻率的晶體,允許輸?shù)拿}沖頻率最高為250KHz。圖6-12對外部輸入信號的基本要求6.4定時器/計數(shù)器的編程和應(yīng)用
4種工作方式中,方式0與方式1基本相同,由于方式0是為兼容MCS-48而設(shè),初值計算復(fù)雜,在實際應(yīng)用中,一般不用方式0,而采用方式1。6.4.1方式1應(yīng)用
例6-1假設(shè)系統(tǒng)時鐘頻率采用6MHz,要在P1.0上輸出一個周期為2ms的方波,如圖6-13所示。
圖6-13在P1.0引腳上輸出的波形方波的周期用T0來確定,讓T0每隔1ms計數(shù)溢出1次(每1ms產(chǎn)生一次中斷),CPU響應(yīng)中斷后,在中斷服務(wù)程序中對P1.0取反。(1)計算初值X
設(shè)初值為X,則有: (216-X)×2×10-6=1×10-3216-X=500X=65036X化為16進(jìn)制,即X=FE0CH=1111111000001100B。所以,T0的初值為:
TH0=0FEHTL0=0CH(2)初始化程序設(shè)計
機器周期=2us=2×10-6S對寄存器IP、IE、TCON、TMOD的相應(yīng)位進(jìn)行正確設(shè)置,將計數(shù)初值送入定時器中。(3)程序設(shè)計
中斷服務(wù)程序除產(chǎn)生方波外,還要注意將計數(shù)初值重新裝入定時器中,為下一次中斷作準(zhǔn)備。參考程序:
ORG0000HRESET:AJMPMAIN;轉(zhuǎn)主程序
ORG000BH;T0的中斷入口 AJMPIT0P ;轉(zhuǎn)T0中斷處理程序IT0P
ORG0100HMAIN:MOVSP,#60H;設(shè)堆棧指針
MOVTMOD,#01H ;設(shè)置T0為方式1
ACALLPT0M0 ;調(diào)用子程序PT0M0HERE:AJMPHERE ;自身跳轉(zhuǎn)PT0M0:MOVTL0,#0CH ;T0中斷服務(wù)程序,T0重新置初值
MOVTH0,#0FEHSETBTR0 ;啟動T0SETBET0 ;允許T0中斷
SETBEA;CPU開中斷
RETITOP:MOVTL0,#0CH;T0中斷服務(wù)子程序,T0置初值
MOVTH0,#0FEHCPLP1.0;P1.0的狀態(tài)取反
RETI查詢方式的參考程序:
MOVTMOD,#01H;設(shè)置T0為方式1
SETBTR0;接通T0LOOP:MOVTH0,#0FEH;T0置初值 MOVTL0,#0CHLOOP1:JNBTF0,LOOP1;查詢TF0標(biāo)志,為1說明T0溢出,下執(zhí)
CLRTR0;T0溢出,關(guān)閉T0 CPLP1.0;P1.0的狀態(tài)求反 SJMPLOOP例6-2
假設(shè)系統(tǒng)時鐘為6MHz,編寫定時器T0產(chǎn)生1秒定時的程序。(1)T0工作方式的確定定時時間較長,采用哪一種工作方式?由各種工作方式的特性,可計算出:
方式0最長可定時16.384ms;
方式1最長可定時131.072ms;方式2最長可定時512
s。選方式1,每隔100ms中斷一次,中斷10次為1s。(2)計算計數(shù)初值因為:(216-X)×2×10-6=10-1所以:X=15536=3CB0H因此:TH0=3CH,TL0=B0H(3)10次計數(shù)的實現(xiàn)采用循環(huán)程序法。(4)程序設(shè)計參考程序:
ORG0000HRESET:LJMPMAIN ;上電,轉(zhuǎn)主程序入口MAIN
ORG000BH;T0的中斷入口
LJMPIT0P ;轉(zhuǎn)T0中斷處理程序IT0P
ORG1000HMAIN:MOVSP,#60H ;設(shè)堆棧指針
MOVB,#0AH;設(shè)循環(huán)次數(shù)10次
MOVTMOD,#01H;設(shè)T0工作在方式1
MOVTL0,#0B0H;給T0設(shè)初值
MOVTH0,#3CH SETBTR0 ;啟動T0SETBET0 ;允許T0中斷SETBEA;CPU開放中斷HERE:SJMPHERE;等待中斷
ITOP:MOVTL0,#0B0H;T0中斷子程序,重裝初值
MOVTH0,#3CH; DJNZB,LOOPCLRTR0 ;1s定時時間到,停止T0工作LOOP:RETI6.4.2方式2的應(yīng)用省去程序中重裝初值的指令,并可產(chǎn)生相當(dāng)精確的定時時間。
例6-3
當(dāng)T0(P3.4)引腳上發(fā)生負(fù)跳變時,從P1.0引腳上輸出一個周期為1ms的方波,如圖6-13所示。(假設(shè)時鐘為6MHz)(1)工作方式選擇T0為方式1計數(shù),初值0FFFFH,即外部計數(shù)輸入端T0(P3.4)發(fā)生一次負(fù)跳變時,T0加1且溢出,溢出標(biāo)志TF0置“1”,發(fā)中斷請求。在進(jìn)入T0中斷程序后,把F0標(biāo)志置“1”,說明T0腳已接收了負(fù)跳變信號。圖6-14T1定義為方式2定時。在T0腳發(fā)生一次負(fù)跳變后,啟動T1每500
s產(chǎn)生一次中斷,在中斷服務(wù)程序中對P1.0求反,使P1.0產(chǎn)生周期1ms的方波。(2)計算T1初值設(shè)T1的初值為X:則(28-X)×2×10-6=5×10-4X=28-250=6=06H(3)程序設(shè)計
ORG0000H
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安裝工程施工合同的爭議處理方式3篇
- 數(shù)據(jù)保密責(zé)任書3篇
- 招標(biāo)管理現(xiàn)象調(diào)查3篇
- 安徽人力資源行業(yè)勞動合同模板3篇
- 施工中的勞務(wù)分包與干掛石材合同解析3篇
- 布線工程招投標(biāo)書3篇
- 捐贈協(xié)議書模板集合3篇
- 招標(biāo)項目的設(shè)計邀請函寫作3篇
- 工業(yè)材料采購規(guī)定文件3篇
- 招標(biāo)文件領(lǐng)取截止3篇
- 《零售藥店實務(wù)》期末考試復(fù)習(xí)題及答案
- 培訓(xùn)中心商業(yè)計劃書
- 2025年上半年事業(yè)單位聯(lián)考內(nèi)蒙古自治區(qū)民政廳招聘3人準(zhǔn)考重點基礎(chǔ)提升(共500題)附帶答案詳解
- 2024年度云計算中心綜合布線合同5篇
- 2024-2025學(xué)年華東師大新版八年級上冊數(shù)學(xué)期末復(fù)習(xí)試卷(含詳解)
- 期末測試卷-2024-2025學(xué)年語文四年級上冊統(tǒng)編版
- 開票稅點自動計算器
- 醫(yī)療器械質(zhì)量安全風(fēng)險會商管理制度
- 幼兒園繪本故事:《小年獸》 課件
- 京劇英語介紹PPT課件
- in、ing對比辨音練習(xí).doc
評論
0/150
提交評論