/*****************************************************
*函数名称:void Timer_Init(void)
*函数功能:T2初始化
*入口参数:void
*出口参数:void
*****************************************************/
void Timer2_Init(void)
{
//demo使用,为清楚了解,分开写,实际操作整个寄存器更节约rom
T2CON1 |= 0x01; //使能T2
T2CON &= ~0x02; //内部时钟
T2CON &= ~0x01;
T2CON1 &= ~0x40;
T2CON1 &= ~0x20; //000 方式0
T2MOD |= 0x80; //自动重载
T2MOD &= 0x8F;
T2MOD |= 0x20; //FT2=Fsys/16
T2MOD &= ~0x08; //IO不翻转
TR2 = 0;
//无论是读或者写 TL2/TH2(RCAPL2/RCAPH2)的值,必须先停止(TR2=0),否则 T2 将产生不可预知的情况。
//写操作时:必须先写 TL2(RCAPL2),再写TH2(RCAPH2),否则TL2(RCAPL2)的值不能立即反映到内部counter上,
//读操作时:必须先读 TL2(RCAPL2),再读TH2(RCAPH2),否则将读取到错误的值
TL2 = (65536 - 2000) % 256;
TH2 = (65536 - 2000) / 256;
RCAPL2 = (65536 - 2000) % 256;
RCAPH2 = (65536 - 2000) / 256; //2ms
TR2 = 1;
IE1 |= 0x01; //使能中断
}
|