1、使用定时器,该做哪些工作
初始化程序应完成如下工作:
- 对TMOD赋值,以确定T0和T1的工作方式。
- 计算初值,并将其写入TH0、TL0或TH1、TL1。
- 中断方式时,则对EA赋值,开发定时器中断。
- 使用TR0或TR1置为,启动定时/计数器定时或计数。
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led = P2^0;
/**
初始定时器
定时1ms=1000us
2^16-1000+1,0xFC18
*/
void Timer0Init()
{
TMOD |= 0X01; // 0000 0001
TH0=0XFC;
TL0=0X18;
ET0=1; // IE寄存器打开T0的中断
EA=1; //打开总中断
TR0=1; //开始定时器中断
}
void main()
{
while(1)
{
Timer0Init();
while(1)
{
}
}
}
void Time0() interrupt 1
{
static u16 i;
// 方式一:需要重新装载,方式二:不需要
TH0=0XFC;
TL0=0X18;
i++; //每次经过1ms,进行累加
if(i==1000){ //1s
i=0; //就要清零,防止溢出
led=~led;
}
}