姓名:黃楠琳? ? ? ?學(xué)號(hào):19020100011? ? ? ? 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自:https://blog.csdn.net/weixin_44985601/article/details/104742909
【嵌牛導(dǎo)讀】本篇文章介紹了單片機(jī)中特殊功能寄存器實(shí)現(xiàn)定時(shí)器和計(jì)數(shù)器
【嵌牛鼻子】定時(shí)器、計(jì)數(shù)器、TH、TL、TMOD工作模式寄存器、TCON定時(shí)器控制寄存器
【嵌牛提問(wèn)】單片機(jī)中怎樣實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器功能?
【嵌牛正文】
定時(shí)器/計(jì)數(shù)器簡(jiǎn)介
在單片機(jī)中,存在兩個(gè)定時(shí)器/計(jì)數(shù)器,他們分別為T(mén)0和T1
在單片機(jī)中,定時(shí)器/計(jì)數(shù)器是實(shí)現(xiàn)精準(zhǔn)定時(shí)、用于測(cè)量脈沖等應(yīng)用
基本的定時(shí)器/計(jì)數(shù)器原理如圖所示

在了解定時(shí)器/計(jì)數(shù)器之前,我們需要了解幾個(gè)基本概念:
1)時(shí)鐘周期:時(shí)鐘周期 T 是時(shí)序中最小的時(shí)間單位,具體計(jì)算的方法就是1/ 時(shí)鐘源頻率【也就是晶振電路的振動(dòng)頻率】(一般單片機(jī)采用的是11.0592MHz)
2)機(jī)器周期:?jiǎn)纹瑱C(jī)完成一個(gè)操作的最短時(shí)間,一個(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期
定時(shí)器/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成(TH和TL)。TMOD是定時(shí)器/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。
定時(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 ,通過(guò)設(shè)定TH和TL的初值,我們就可以合理設(shè)置定時(shí)器的定時(shí)時(shí)間
計(jì)數(shù)器:計(jì)數(shù)器主要用來(lái)計(jì)輸入脈沖的值。每來(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í)),單片機(jī)對(duì)外部脈沖有基本要求:脈沖的高低電平持續(xù)時(shí)間都必須大于1個(gè)機(jī)器周期。所以T0或者T1 輸入的可計(jì)數(shù)外部脈沖的最高頻率為當(dāng)前單片機(jī)工作頻率/24。
在單片機(jī)中,存在兩個(gè)定時(shí)器/計(jì)數(shù)器,他們分別為T(mén)0和T1
TH與TL
在單片機(jī)中,存在4個(gè)特殊功能寄存器,主要用來(lái)實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器,他們分別是

通過(guò)設(shè)置TH與TL的初值,我們可以實(shí)現(xiàn)我們想要的定時(shí)功能、延時(shí)功能和計(jì)數(shù)功能
例如:如果我們想要實(shí)現(xiàn)0.02s的定時(shí),我們可以先計(jì)數(shù)實(shí)現(xiàn)0.02s所需要的機(jī)器周期,假設(shè)需要的機(jī)器周期為x
x*12/11059200=0.02
–> x=18432
由于單片機(jī)存在的是16位定時(shí)器/計(jì)數(shù)器,最大能表示65535,因此當(dāng)初值y=65536-18432=47104時(shí),定時(shí)器可實(shí)現(xiàn)0.02s的定時(shí),對(duì)應(yīng)的16進(jìn)制為0xB800,因此當(dāng)我們給TH0=0xB8,TL0=0x00時(shí),我們可實(shí)現(xiàn)定時(shí)器0.02s的精確定時(shí)
TMOD工作模式寄存器
TMOD是定時(shí)器、計(jì)數(shù)器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER),它是一個(gè)逐位定義的8位寄存器,但只能使用字節(jié)尋址,其字節(jié)地址為89H
主要用來(lái)控制定時(shí)器/計(jì)數(shù)器的工作模式

1)GATE——門(mén)控制位
GATE=0,以運(yùn)行控制位TRx啟動(dòng)定時(shí)器;GATE=1,以外中斷請(qǐng)求信號(hào)(INT1或INT0)啟動(dòng)定時(shí)器,即僅當(dāng)INT0(P3.2)【INT1(P3.3)】引腳為高且TR0控制位被置1時(shí)可使定時(shí)器開(kāi)始計(jì)時(shí),常用來(lái)測(cè)量外部信號(hào)脈沖寬度
2)C/T——功能選擇位
定時(shí)器或計(jì)數(shù)器選擇位,該位被清零時(shí)用作定時(shí)器功能(內(nèi)部系統(tǒng)時(shí)鐘),置1時(shí)用作計(jì)數(shù)器功能
3)M0、M1——方式選擇功能
MCS-51的定時(shí)器T0有4種工作方式:方式0,方式1,方式2,方式3。
MCS-51的定時(shí)器T1有3種工作方式:方式0,方式1,方式2
目前我們常用的是方式1和方式2,方式0和方式3基本不用

TCON定時(shí)器控制寄存器
TCON(Timer?Control?Register)定時(shí)器/計(jì)數(shù)器控制寄存器,TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H一8FH,可進(jìn)行位尋址
TCON的作用是控制定時(shí)器的啟、停,標(biāo)志定時(shí)器溢出和中斷情況

目前我們只了解4567位的作用,其他的暫時(shí)不做了解
1)TF位
溢出中斷請(qǐng)求標(biāo)志位,T1計(jì)數(shù)/定時(shí)溢出時(shí)由硬件自動(dòng)置TF1為1,CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0,也可軟件清零,可用來(lái)判別定時(shí)器/計(jì)數(shù)器的狀態(tài)
2)TR位
定時(shí)器/計(jì)數(shù)器運(yùn)行控制位,TR置0時(shí)定時(shí)器/計(jì)數(shù)器停止工作,置1時(shí)開(kāi)始工作
定時(shí)器操作實(shí)例
對(duì)于定時(shí)器的設(shè)置,我們只需要遵循以下幾個(gè)步驟:
第一:設(shè)置特殊功能寄存器TMOD,配置好工作模式
第二:設(shè)置存儲(chǔ)器TH0與TL0的初值
第三:設(shè)置TCON,通過(guò)TR0置1來(lái)讓定時(shí)器開(kāi)始計(jì)時(shí)
第四:判斷TCON寄存器的TF0,監(jiān)測(cè)定時(shí)器溢出情況
下面,我們基于C語(yǔ)言來(lái)進(jìn)行程序編寫(xiě):以實(shí)現(xiàn)LED燈閃爍(周期為2s)
