嵌入式开发学习笔记6-了解单片机中的特殊功能寄存器(定时器/计数器)
嵌入式開(kāi)發(fā)學(xué)習(xí)筆記6-了解單片機(jī)中的特殊功能寄存器(定時(shí)器/計(jì)數(shù)器)
- 定時(shí)器/計(jì)數(shù)器簡(jiǎn)介
- TH與TL
- TMOD工作模式寄存器
- TCON定時(shí)器控制寄存器
- 定時(shí)器操作實(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ī)器周期:單片機(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ù)器,他們分別是
| TH0 | 定時(shí)器/計(jì)數(shù)器 | 0x8C | 0x00 |
| TL0 | 定時(shí)器/計(jì)數(shù)器 | 0x8A | 0x00 |
| TH1 | 定時(shí)器/計(jì)數(shù)器 | 0x8D | 0x00 |
| TL1 | 定時(shí)器/計(jì)數(shù)器 | 0x8B | 0x00 |
通過(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)
#include<reg52.h>//定時(shí)器0初始化 void Timer0Init() {TMOD = 0x01;//定時(shí)器模式,使用工作方式1TH0 = 0xB8;//定時(shí)器定時(shí)0.02sTL0 = 0x00;TR0 = 1//啟動(dòng)定時(shí)器 }//定時(shí)器0溢出后進(jìn)行初始化 void TimerOutInit() {TF0 = 0;//軟件清零TH0 = 0xB8;TL0 = 0x00; }void main() {Timer0Init();//定時(shí)器0初始化P0 = 0x00;//打開(kāi)LED燈if(TF0 == 1)//判斷定時(shí)器0是否溢出{ Timer0OutInit();//初始化for(i=0;i<50;i++)//定時(shí)1s{P0 = ~P0;//實(shí)現(xiàn)LED閃爍}} }上述程序沒(méi)有運(yùn)行調(diào)試,有問(wèn)題可以即時(shí)反饋
--------------------------------------以上內(nèi)容由作者原創(chuàng),歡迎轉(zhuǎn)載,部分從網(wǎng)絡(luò)整理,如侵權(quán)清聯(lián)系刪除----------------------------------------------
總結(jié)
以上是生活随笔為你收集整理的嵌入式开发学习笔记6-了解单片机中的特殊功能寄存器(定时器/计数器)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux修改tomcat端口号为80不
- 下一篇: iGrimace IG V8 一键新机安