请教一个定时器比较中断的问题
本帖最后由 seagatecm 于 2015-6-19 23:43 编辑最近在学习定时器的用法,写了个程序测试发现和预想的不一样,请教下大家是怎么回事:
这里是想实现一个led定时闪烁的效果:F_CPU是16M,1024预分频。
void setup() {
pinMode(13, OUTPUT);
cli();
TCNT1 = 0;
TCCR1A = 0;
TCCR1B = 0;
OCR1A = 1;
TCCR1B |= 1 << CS12 | 1 << CS10;
bitSet(TIMSK,OCIE1A);
sei();
}
int flag = 0;
ISR(TIMER1_COMPA_vect) {
TCNT1 = 0;
if (flag == 0)
{
flag = 1;
digitalWrite(13, HIGH);
}
else
{
flag = 0;
digitalWrite(13, LOW);
}
}
运行的结果是灯亮了后一直就不会熄灭,感觉是中断只发生了一次。 补充一下,加上 TCCR1B |= 1 << WGM12; 也没效果 自己回答下这个问题吧,原来是OCR1A 算错了
数值应该是 16M / 1024 = 15625
页:
[1]