|
|
本帖最后由 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);
}
}
运行的结果是灯亮了后一直就不会熄灭,感觉是中断只发生了一次。 |
|