51單片機(jī)定時(shí)器/計(jì)數(shù)器
一、80C51定時(shí)/計(jì)數(shù)器
定時(shí)/計(jì)數(shù)器是單片機(jī)系統(tǒng)一個(gè)重要的部件,其工作方式靈活、編程簡(jiǎn)單、使用方便,可用來(lái)實(shí)現(xiàn)定時(shí)控制、延時(shí)、頻率測(cè)量、脈寬測(cè)量、信號(hào)發(fā)生、信號(hào)檢測(cè)等。此外,定時(shí)/計(jì)數(shù)器還可作為串行通信中波特率發(fā)生器。
(二) 定時(shí)/計(jì)數(shù)器的控制寄存器
⒈ 定時(shí)/計(jì)數(shù)器控制寄存器TCON
(1) TCON.7 TF1:定時(shí)器1溢出標(biāo)志位。當(dāng)定時(shí)器1計(jì)滿數(shù)產(chǎn)生溢出時(shí),由硬件自動(dòng)置TF1=1。在中斷允許時(shí),向CPU發(fā)出定時(shí)器1的中斷請(qǐng)求,進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清0。在中斷屏蔽時(shí),TF1可作查詢測(cè)試用,此時(shí)只能由軟件清0。
(2) TCON.6 TR1:定時(shí)器1運(yùn)行控制位。由軟件置1或清0來(lái)啟動(dòng)或關(guān)閉定時(shí)器1。當(dāng)GATE=1,且INT1為高電平時(shí),TR1置1啟動(dòng)定時(shí)器1;當(dāng)GATE=0時(shí),TR1置1即可啟動(dòng)定時(shí)器1。
(3) TCON.5 TF0:定時(shí)器0溢出標(biāo)志位。其功能及操作情況同TF1。
(4) TCON.4 TR0:定時(shí)器0運(yùn)行控制位。其功能及操作情況同TR1。
(5)其他四個(gè)在中斷說(shuō)明。
⒉ 定時(shí)/計(jì)數(shù)器工作方式控制寄存器TMOD
⑴ M1M0 —— 工作方式選擇位
⑵ C/T —— 計(jì)數(shù)/定時(shí)方式選擇位
C/T=1,計(jì)數(shù)工作方式,對(duì)外部事件脈沖計(jì)數(shù),用作計(jì)數(shù)器。
C/T=0,定時(shí)工作方式,對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù),用作定時(shí)器。
⑶ GATE —— 門(mén)控位
GATE=0,運(yùn)行只受TCON中運(yùn)行控制位TR0/TR1的控制。
GATE=1,運(yùn)行同時(shí)受TR0/TR1和外中斷輸入信號(hào)的雙重控制。只有當(dāng)INT0/INT1=1且TR0/TR1=1,T0/T1才能運(yùn)行。
TMOD字節(jié)地址89H,不能位操作,設(shè)置TMOD須用字節(jié)操作指令。
(三). 定時(shí)/計(jì)數(shù)器工作方式
⒈ 工作方式0
13位計(jì)數(shù)器,由TL0低5位和TH0高 8位組成,TL0低5位計(jì)數(shù)滿時(shí)不向TL0第6位進(jìn)位,而是向TH0進(jìn)位,13位計(jì)滿溢出,TF0置“1”。最大計(jì)數(shù)值213 = 8192。
初值確定:TH0=(8192-5000)/32;TL0=(8192-5000)%32;進(jìn)行5ms的延時(shí)。12M晶振。
⒉ 工作方式1
16位計(jì)數(shù)器,最大計(jì)數(shù)值為216 = 65536。
初值確定:TH0=(65536-50000)/256;TL0=(65536-50000)%256;進(jìn)行50ms的延時(shí)。12M晶振。
⒊ 工作方式2
8位計(jì)數(shù)器,僅用TL0計(jì)數(shù),最大計(jì)數(shù)值為28= 256,計(jì)滿溢出后,一方面使溢出標(biāo)志TF0 = 1;另一方面,使原來(lái)裝在TH0中的初值裝入TL0。
優(yōu)點(diǎn):定時(shí)初值可自動(dòng)恢復(fù);缺點(diǎn):計(jì)數(shù)范圍小。
適用于需要重復(fù)定時(shí),而定時(shí)范圍不大的應(yīng)用場(chǎng)合。
初值確定:TH0=TL0=256-200進(jìn)行200us的延時(shí)。12M晶振。
⒋ 工作方式3
方式3僅適用于T0,T1無(wú)方式3。
⑴ T0方式3
在方式3情況下,T0被拆成二個(gè)獨(dú)立的8位計(jì)數(shù)器TH0、TL0。
① TL0使用T0原有的控制寄存器資源:TF0,TR0,GATE,C/T,INT0,組成一個(gè)8位的定時(shí)/計(jì)數(shù)器;
② TH0借用T1的中斷溢出標(biāo)志TF1,運(yùn)行控制開(kāi)關(guān)TR1,只能對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù),組成另一個(gè)8位定時(shí)器(不能用作計(jì)數(shù)器)。
⑵ T0方式3情況下的T1
T1由于其TF1、TR1被T0的TH0占用,計(jì)數(shù)器溢出時(shí),只能將輸出信號(hào)送至串行口,即用作串行口波特率發(fā)生器。
(四)、定時(shí)/計(jì)數(shù)器的應(yīng)用
⒈ 定時(shí)器/計(jì)數(shù)器初始化的主要內(nèi)容
(1) 選擇工作方式:通過(guò)對(duì)方式寄存器TMOD進(jìn)行設(shè)置
(2) 給定時(shí)器賦初值
(3) 根據(jù)需要設(shè)置中斷控制字
(4) 啟動(dòng)定時(shí)器
1. 定時(shí)器/計(jì)數(shù)器初值設(shè)定方法
(1)根據(jù)定時(shí)長(zhǎng)短,選擇工作方式
(2)計(jì)算定時(shí)/計(jì)數(shù)初值
80C51定時(shí)/計(jì)數(shù)初值計(jì)算公式:
其中: N與工作方式有關(guān): 方式0時(shí),N=13;方式1時(shí),N=16;方式2、3時(shí),N=8。
機(jī)周時(shí)間與主振頻率有關(guān):機(jī)周時(shí)間=12/fosc,fosc=12MHZ時(shí),1機(jī)周=1mS; fosc=6MHZ 時(shí),1機(jī)周=2mS。
擴(kuò)展閱讀:?jiǎn)纹瑱C(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)以及和工作原理
編輯:admin 最后修改時(shí)間:2018-05-18