使用配置函数配置定时器可以很方便程序编写
//定时器使用12个时钟周期时钟
unsigned char T1RH = 0; //T1重载值的高字节
unsigned char T1RL = 0; //T1重载值的低字节
/*******************************************************************************
* 函数功能 : T1配置函数
* 函数说明 :
*******************************************************************************/
void ConfigTimer1(unsigned int ms)
{
unsigned long tmp; //临时变量
AUXR=0x00;//定时器为12T
tmp = FOSC / 12; //定时器计数频率
tmp = (tmp * ms) / 1000; //计算所需的计数值
tmp = 65536 - tmp; //计算定时器重载值
T1RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节
T1RL = (unsigned char)tmp;
TMOD &= 0x0F; //清零T1的控制位
TMOD |= 0x00; //配置T1为模式0 模式0为16位自动重装,1为16位不重装,02为8位自动重装定时器
TH1 = T1RH; //加载T1重载值(自动重装模式只需计算TH0)
TL1 = T1RL;
ET1 = 1; //使能T1中断
TR1 = 1; //启动T1
}
//定时器使用1个时钟周期时钟
unsigned char T1RH = 0; //T1重载值的高字节
unsigned char T1RL = 0; //T1重载值的低字节
/*******************************************************************************
* 函数功能 : T1配置函数
* 函数说明 :
*******************************************************************************/
void ConfigTimer1(unsigned int ms)
{
unsigned long tmp; //临时变量
tmp = FOSC ; //定时器计数频率
tmp = (tmp * ms) / 1000; //计算所需的计数值
tmp = 65536 - tmp; //计算定时器重载值
T1RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节
T1RL = (unsigned char)tmp;
TMOD &= 0x0F; //清零T1的控制位
TMOD |= 0x00; //配置T1为模式0 模式0为16位自动重装,1为16位不重装,02为8位自动重装定时器
TH1 = T1RH; //加载T1重载值(自动重装模式只需计算TH0)
TL1 = T1RL;
ET1 = 1; //使能T1中断
TR1 = 1; //启动T1
}