定時(shí)器/計(jì)數(shù)器介紹
定時(shí)/計(jì)數(shù)器T0和T1分別是由兩個(gè)8位的專用寄存器組成,即定時(shí)/計(jì)數(shù)器T0由TH0和TL0組成,T1由TH1和TL1組成。此外,其內(nèi)部還有2個(gè)8位的特殊功能寄存器TMOD和TCON,TMOD負(fù)責(zé)控制和確定T0和T1的功能和工作模式,TCON用來控制T0和T1啟動(dòng)或停止計(jì)數(shù),同時(shí)包含定時(shí)/計(jì)數(shù)器的狀態(tài)。
TF1:定時(shí)器1溢出標(biāo)志。定時(shí)/計(jì)數(shù)器溢出時(shí)由硬件置位。中斷處理時(shí)由硬件清除。或用軟件清除。
TF0:定時(shí)器0溢出標(biāo)志。定時(shí)/計(jì)數(shù)器溢出時(shí)由硬件置位。中斷處理時(shí)由硬件清除,或用軟件清除。
在現(xiàn)在很多新MCU中,不只有兩個(gè) 定時(shí)/計(jì)數(shù)器,例如STC15系列就有四個(gè)定時(shí)/計(jì)數(shù)器,但是在使用上操作上是大同小異的。
定時(shí)器內(nèi)部框圖和結(jié)構(gòu)介紹
定時(shí)器/計(jì)數(shù)器有定時(shí)器0(簡(jiǎn)稱T0),定時(shí)器1(簡(jiǎn)稱T1),定時(shí)器方式寄存器TMOD和定時(shí)器控制寄存器TCON四部分組成。該邏輯框圖如下所示。
紅線
TMOD(工作方式寄存器):從該命名就可也知道,該寄存器控制的是選擇哪一個(gè)定時(shí)器,T0或者T1。用什么方式,作為定時(shí)器使用,還是作為計(jì)數(shù)器使用。這個(gè)都將由TMOD對(duì)應(yīng)的位決定。
由TMOD的2位的C/T和6位的C/T位決定。
藍(lán)色
TCON(控制寄存器):控制寄存器的高四位負(fù)責(zé)管理定時(shí)器/計(jì)數(shù)器和中斷申請(qǐng),低四位則是負(fù)責(zé)與外部中斷有關(guān)的設(shè)置。選擇了定時(shí)器的工作方式之后,就需要由一個(gè)寄存器來允許它是否可以工作,TCON就是這個(gè)功能。
黃色
則是外部計(jì)數(shù),外部每產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器加1,當(dāng)計(jì)數(shù)器都為一,產(chǎn)生一次溢出。由TH0,TL0(值得是定時(shí)器0的高八位和低八位)或者TH1,TH0(值得是定時(shí)器1的高八位和低八位
進(jìn)行累計(jì)。就比如需要一個(gè)計(jì)數(shù)器,則就需要由該IO進(jìn)行計(jì)數(shù)。
紫色
當(dāng)定時(shí)器1和定時(shí)器0計(jì)數(shù)器累計(jì)加一,當(dāng)計(jì)數(shù)器全為一的時(shí)候,長(zhǎng)生一次溢出,向TCON中的TF0或者TF1置1。
綠色
由TCON向CPU申請(qǐng)中斷。
黑色
則是外部中斷直接向CPU進(jìn)行中斷申請(qǐng);
寄存器介紹
工作方式寄存器TMOD
GATE:門控衛(wèi),當(dāng)GATE=0時(shí)候,只需要在軟件上使TCON置TR0或者TR1為1,既可以啟動(dòng)定時(shí)器/計(jì)數(shù)器。當(dāng)GATE=1時(shí),不僅需要在軟件上使TCON置TR0或者TR1為1,還需要由外部中斷引腳INT0————或INT1————為高電平的時(shí)候,才能啟動(dòng)定時(shí)器/計(jì)數(shù)器。
C/T-: 定時(shí)器/計(jì)數(shù)器選擇位, C/T-=1時(shí),為計(jì)數(shù)模式。C/T-=0時(shí),為定時(shí)模式。
M1、M0:工作方式設(shè)置位。四種工作方式由M1、M0進(jìn)行設(shè)置。如下表
控制寄存器
TCON的高四位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。低四位與外部中斷相關(guān),在前面的中斷中已經(jīng)做了介紹。
TF1:T1中斷溢出中斷請(qǐng)求位。計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷了之后,TF1由硬件自動(dòng)清0。在T1工作的時(shí)候,CPU可以隨時(shí)查詢TF1的狀態(tài)。
TR1:T1運(yùn)行控制位。當(dāng)TR1為1時(shí),則表示T1開始工作。當(dāng)TR1為0時(shí),則表示T1停止工作。TR1需要由軟件置1或者0;
TF0:T0中斷溢出中斷請(qǐng)求位。功能與TF1相同。
TR0: T0運(yùn)行控制位。功能與TF1相同。
定時(shí)/計(jì)數(shù)器的工作方式
在新的8051結(jié)構(gòu)的單片機(jī)中,2個(gè)定時(shí)/計(jì)數(shù)器都有四種工作模式,既通過TMOD的M1和M0選擇。但是在傳統(tǒng)的Intel 8051的單片機(jī)中,T0有四種工作方式(方式0、1、2、3),T1有三種工作方式(方式0、1、2),以上除了所使用的寄存器,有關(guān)的控制位,標(biāo)志位不同外,在操作方式上是一樣的。以下就以參見的工作方式1(既計(jì)數(shù)位數(shù)是16位)為例。
方式1
方式1的計(jì)數(shù)方式是16位,TH0作為高八位, TL0作為第八位。其邏輯結(jié)構(gòu)圖如所示。組成了16位的加一計(jì)數(shù)器,計(jì)數(shù)個(gè)數(shù)和計(jì)數(shù)初值的關(guān)系為:
計(jì)數(shù)的初值在0 ~ 65535之間,計(jì)數(shù)范圍為1~65536 。
例如,若要求定時(shí)器在T0 的工作模式下,定時(shí)時(shí)間為1ms。當(dāng)晶振為6MHZ的時(shí),求送入TH0和TL0的值。由于晶振為6MHZ,所以該機(jī)械周期為=12/晶振頻率,即為2us。
將X值寫入TH0和TL0時(shí),分別將X值得高八位賦值給TH0,第八位賦值給TL0,格式如下:
TH0=(65536-5000)/256 //定時(shí)器的高八位賦值
TL0=(65536-5000)%256 //定時(shí)器的第八位賦值
所以一個(gè)該程序部分代碼為:
TMOD=0X01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TF0=0;
TR0=1
使用方式1的工作模式,進(jìn)行1s的延時(shí),通過LED的閃爍呈現(xiàn)出來。
寫法一
#include < reg51.h >
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED=P2^0;
void delay_1s()
{
u8 num=0;
TMOD=0X01;
TR0=1;
while(1)
{
TH0=(65536-18432)/256;
TL0=(65536-18432)%256;
num++;
do
{
TF0=0;
}while(!TF0);
if (num==25)
{
num=0;
break;
}
}
}
int main()
{
while(1)
{
LED=~LED;
delay_1s();
}
}
寫法二
#include < reg51.h >
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED=P2^0;
u8 num;
void TIM0init(void)
{
TMOD=0x01; //設(shè)置定時(shí)器0為工作方式0
TH0=(65536-18432)/256;
TL0=(65536-18432)%256;
EA=1; //開總中斷
ET0=1; //開定時(shí)器中斷
TR0=1; //啟動(dòng)定時(shí)器0
}
void T0_time() interrupt 1
{
TH0=(65536-18432)/256;//重裝初值,如果不重裝,中斷只觸發(fā)一次
TL0=(65536-18432)%256;
num++;
}
/*
interrupt 0 指明是外部中斷0;
interrupt 1 指明是定時(shí)器中斷0;
interrupt 2 指明是外部中斷1;
interrupt 3 指明是定時(shí)器中斷1;
interrupt 4 指明是串行口中斷;
函數(shù)名字可以隨便起,但定時(shí)器0的中斷號(hào)是固定為1的
*/
void main()
{
TIM0init();
while(1)
{
if(num==25) //如果到了25,說明一秒時(shí)間到
{
num=0;
LED=~LED; //讓發(fā)光管狀態(tài)取反
}
}
}
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
45011瀏覽量
651150 -
mcu
+關(guān)注
關(guān)注
146文章
18001瀏覽量
367923 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2291瀏覽量
96485 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3301瀏覽量
119131 -
80C51單片機(jī)
+關(guān)注
關(guān)注
4文章
34瀏覽量
18684
發(fā)布評(píng)論請(qǐng)先 登錄
51單片機(jī)計(jì)數(shù)器與定時(shí)器的區(qū)別
80C51單片機(jī)定時(shí)器/計(jì)數(shù)器詳解(含工作方式)

【C51】單片機(jī)定時(shí)器介紹

單片機(jī)教程之80C51的中斷系統(tǒng)及定時(shí)和計(jì)數(shù)器的詳細(xì)資料概述

單片機(jī)教程之定時(shí)器和計(jì)數(shù)器原理及應(yīng)用

51單片機(jī)的計(jì)數(shù)器和定時(shí)器的詳細(xì)資料講解

51單片機(jī)的定時(shí)器和計(jì)數(shù)器詳細(xì)資料介紹和應(yīng)用程序免費(fèi)下載

使用51單片機(jī)定時(shí)器和計(jì)數(shù)器實(shí)現(xiàn)定時(shí)的實(shí)例說明

51單片機(jī)的定時(shí)器和計(jì)數(shù)器的使用資料詳細(xì)說明

80C51單片機(jī)內(nèi)部定時(shí)器和計(jì)數(shù)器的結(jié)構(gòu)及原理解析

基于51單片機(jī)的定時(shí)器和計(jì)數(shù)器硬件設(shè)計(jì)
51單片機(jī)之定時(shí)器\計(jì)數(shù)器的工作原理

51單片機(jī)定時(shí)器、計(jì)數(shù)器配置

51單片機(jī)的定時(shí)器與計(jì)數(shù)器

51單片機(jī)定時(shí)器/計(jì)數(shù)器

評(píng)論