STC32G12K128内置五个定时器/计数器
直接使用STC-ISP自带的定时器计算器
//35MHZ 定时器0 1T模式 16位自动重载 1毫秒
void Timer0Init(void)
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x48; //设置定时初始值
TH0 = 0x77; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //不要忘记打开中断允许
EA = 1; //还有总中断
}
void TM0_Isr() interrupt 1 //定时器0中断
{
...
}
//35MHZ 定时器1 1T模式 16位自动重载 1毫秒
void Timer1Init(void)
{
AUXR |= 0x40; //定时器时钟1T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x48; //设置定时初始值
TH1 = 0x77; //设置定时初始值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
ET1 = 1; //不要忘记打开中断允许
EA = 1; //还有总中断
}
void TM1_Isr() interrupt 3 //定时器1中断
{
...
}
//35MHZ 定时器2 1T模式 16位自动重载 1毫秒
void Timer2Init(void)
{
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0x48; //设置定时初始值
T2H = 0x77; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
ET2 = 1; //不要忘记打开中断允许
EA = 1; //还有总中断
}
void TM2_Isr() interrupt 12 //定时器2中断
{
...
}
//35MHZ 定时器3 1T模式 16位自动重载 1毫秒
void Timer3Init(void)
{
T4T3M |= 0x02; //定时器时钟1T模式
T3L = 0x48; //设置定时初始值
T3H = 0x77; //设置定时初始值
T4T3M |= 0x08; //定时器3开始计时
ET3 = 1; //不要忘记打开中断允许
EA = 1; //还有总中断
}
void TM3_Isr() interrupt 19 //定时器3中断
{
...
}
//35MHZ 定时器4 1T模式 16位自动重载 1毫秒
void Timer4Init(void)
{
T4T3M |= 0x20; //定时器时钟1T模式
T4L = 0x48; //设置定时初始值
T4H = 0x77; //设置定时初始值
T4T3M |= 0x80; //定时器4开始计时
ET4 = 1; //不要忘记打开中断允许
EA = 1; //还有总中断
}
void TM4_Isr() interrupt 20 //定时器4中断
{
...
}