我们以M16C/6N4为例
6N4系列有TA和TB两类定时器,分别有5个定时器,总共有10个定时器,几乎可以满足所有的应用。
每个定时器都可以配置为以下4种模式:
Timer mode 定时模式
Event counter mode 事件计数模式
One-shot timer mode 脉冲输出模式
Pulse width modulation mode PWM模式
下面我们谈谈定时器的初始化。
定时器作为CPU的外设,它有一个外设时钟源,这个时钟源来自片内的时钟分频器。
例如:
prc0 = 1;
pclk0 = 1; // 设置Timers A,B的时钟源为f1(晶振的1分频,也就是晶振的频率)
prc0 = 0;
然后初始化其他的寄存器
ta0mr = 0x80; // 设置为定时模式,ta0的时钟为f32
udf = 0x00; // 设置为递减计数
ta0 = 0xffff; // 定时初值
ta0s = 1; // 计数开始
这样,当ta0递减到0时,就产生一个溢出中断
#pragma interrupt _timer_a0(vect=21)
void _timer_a0(void)
{
// 在这个中断里进行处理
}
文章评论(0条评论)
登录后参与讨论