單片機(jī)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)以及和工作原理
定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)
定時(shí)器/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。TMOD是定時(shí)器/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。
定時(shí)器/計(jì)數(shù)器的工作原理
計(jì)數(shù)器輸入的計(jì)數(shù)脈沖源
系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后產(chǎn)生;
T0或T1引腳輸入的外部脈沖源。
計(jì)數(shù)過(guò)程
每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1(即FFFFH)時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)器/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)器/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿。
定時(shí)應(yīng)用
用作定時(shí)器:此時(shí)設(shè)置為定時(shí)器模式,加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t 。
計(jì)數(shù)運(yùn)用
用作計(jì)數(shù)器:此時(shí)設(shè)置為計(jì)數(shù)器模式,外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。每來(lái)一個(gè)外部脈沖,計(jì)數(shù)器加1。但單片機(jī)對(duì)外部脈沖有基本要求:脈沖的高低電平持續(xù)時(shí)間都必須大于1個(gè)機(jī)器周期。
工作方式寄存器(TMOD)
GATE:門(mén)控位。
GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)器/計(jì)數(shù)器工作;(即需要一個(gè)啟動(dòng)條件)
GATE=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳也為高電平時(shí),才能啟動(dòng)定時(shí)器/計(jì)數(shù)器工作,即需要兩個(gè)啟動(dòng)條件。
C/T :定時(shí)/計(jì)數(shù)模式選擇位。
C/T =0為定時(shí)模式; C/T =1為計(jì)數(shù)模式。
M1M0:工作方式設(shè)置位。
計(jì)數(shù)器工作方式選擇
M1 M0 工 作 方 式 功 能 說(shuō) 明
0 0 方式0 13位計(jì)數(shù)器
0 1 方式1 16位計(jì)數(shù)器
1 0 方式2 自動(dòng)重裝8位計(jì)數(shù)器
1 1 方式3 定時(shí)器0:分成兩個(gè)8位
定時(shí)器1:停止計(jì)數(shù)
定時(shí)器/計(jì)數(shù)器的控制
控制寄存器TCON
TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:
TF1(TCON.7):T1溢出中斷請(qǐng)求標(biāo)志位。T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。TR1(TCON.6):T1起/?刂莆。1:?jiǎn)?dòng) 0:停止
TF0(TCON.5):T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)同。
TR0(TCON.4):T0起/?刂莆。1:?jiǎn)?dòng) 0:停止
定時(shí)器/計(jì)數(shù)器的工作方式
方式0
方式0為13位計(jì)數(shù),由TL0的低5位(高3位未用)和TH0的8位組成TL0的低5位溢出時(shí)向TH0進(jìn)位,TH0溢出時(shí),置位TCON中的TF0標(biāo)志,向CPU發(fā)出中斷請(qǐng)求。
方式1
方式1的計(jì)數(shù)位數(shù)是16位,由TL0(TL1)作為低8位、TH0(TH1)作為高8位,組成了16位加1計(jì)數(shù)器 。
方式2
方式2為自動(dòng)重裝初值的8位計(jì)數(shù)方式。
在方式2下,當(dāng)計(jì)數(shù)器計(jì)滿255(FFH)溢出時(shí),CPU自動(dòng)把TH 的值裝入TL中,不需用戶干預(yù)。因此特別適合于用作較精確的脈沖信號(hào)發(fā)生器。
方式3
方式3只適用于定時(shí)器/計(jì)數(shù)器T0,定時(shí)器T1方式3時(shí)相當(dāng)于TR1=0,停止計(jì)數(shù)。
工作方式3將T0分成為兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0 。
擴(kuò)展閱讀:計(jì)數(shù)器/定時(shí)器的C編程
編輯:admin 最后修改時(shí)間:2018-05-18