定時器TIMER0、TIMER1
RD8T37 系列單片機內(nèi)部的 Timer0 和 Timer1 是兩個 16 位定時器/計數(shù)器,它們具有計數(shù)方式和定時方式兩種工作模式。特殊功能寄存器 TMOD 中有一個控制位 C/TX 來選擇 T0 和T1 是定時器還是計數(shù)器。它們本質(zhì)上都是一個加法計數(shù)器,只是計數(shù)的來源不同。定時器的來源為系統(tǒng)時鐘或者其分頻時鐘,但計數(shù)器的來源為外部管腳的輸入脈沖。只有在 TRx=1 的時候,T0 和 T1 才會被打開計數(shù)。
計數(shù)器模式下,P0.2/T0 和 P0.3/T1 管腳上的每一個脈沖,T0 和T1的計數(shù)值分別增加 1。定時器模式下,可通過特殊功能寄存器 TMCON 來選擇T0和 T1 的計來源是 sys/12 或 fsys (fsys 為分頻后的系統(tǒng)時鐘)。
定時器/計數(shù)器 T0 有4 種工作模式,定時器/計數(shù)器 T1有 3 種工作模式(模式三不存在):
1.模式 0: 13 位定時器/計數(shù)器模式
2.模式 1: 16 位定時器/計數(shù)器模式
3.模式 2: 8 位自動重模式
- 模式 3: 兩個8 位定時器/計數(shù)器模式
在上述模式中,T0 和 T1 的模式 0、1、2 都相同,模式3 不同。
T0 和 T1相關(guān)特殊功能寄存器
定時器0 功能寄存器的宏定義:
/*TIMER*/
sfr TCON = 0X88; //定時器控制寄存器
sfr TMOD = 0X89; //定時器工作模式寄存器
sfr TL0 = 0X8A; //定時器0低8位
sfr TL1 = 0X8B; //定時器1低8位
sfr TH0 = 0X8C; //定時器0高8位
sfr TH1 = 0X8D; //定時器1高8位
定時器0初始化
void Timer0Iint(void)
{
TMOD |= 0x01; // 配置定時器0為 16位定時器, TH0、TL0全用
TH0 =(65536-1000)/256; //1000us定時,即1毫秒溢出產(chǎn)生中斷
TL0 =(65536-1000)%256; //1000us定時,即1毫秒溢出產(chǎn)生中斷
ET0 = 1; //開啟定時器0中斷
EA = 1; //開啟全局中斷
TR0 = 1; //定時器0開始計數(shù);
}
定時器0中斷函數(shù):
void Timer0() interrupt 1
{
//每次產(chǎn)生中斷后初始化定時器初值, 1ms秒產(chǎn)生1次中斷
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
//500毫秒執(zhí)行次LED1反轉(zhuǎn)
count ++;
if(count == 500)
{
LED1 = ~LED1;
count = 0;
}
}
main.c代碼如下:
#include "RD8T37x_C.H"
sbit LED1 = P3^1;
sbit LED2 = P3^2;
static uint32_t count = 0;
void LED_Init(void)
{
P3CON |= 0x06; //P31輸出
}
void Timer0Iint(void)
{
TMOD |= 0x01; // 配置定時器0為 16位定時器, TH0、TL0全用
TH0 =(65536-1000)/256; //1000us定時,即1毫秒溢出產(chǎn)生中斷
TL0 =(65536-1000)%256; //1000us定時,即1毫秒溢出產(chǎn)生中斷
ET0 = 1; //開啟定時器0中斷
EA = 1; //開啟全局中斷
TR0 = 1; //定時器0開始計數(shù);
}
void main(void)
{
LED_Init();
Timer0Iint();
while(1);
}
void Timer0() interrupt 1
{
//每次產(chǎn)生中斷后初始化定時器初值, 1ms秒產(chǎn)生1次中斷
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
//500毫秒執(zhí)行次LED1反轉(zhuǎn)
count ++;
if(count == 500)
{
LED1 = ~LED1;
count = 0;
}
}
下載到開發(fā)板后就實現(xiàn)P3.1閃燈了。
審核編輯:湯梓紅
-
單片機
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634629 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2256瀏覽量
94476 -
定時器
+關(guān)注
關(guān)注
23文章
3246瀏覽量
114715
發(fā)布評論請先 登錄
相關(guān)推薦
評論