|
|
本帖最后由 kitten2014 于 2014-2-14 22:56 编辑
我最近在研究定时器的用法,模仿写了一个简单的程序,用定时器来控制LED的闪烁。但是好像没有起作用。不知道为什么?
我尝试调试,发现m的值并没有增加。应该每一次计数器溢出就可以将m加1。
int ledpin=13;
int m=0;
void setup()
{
unsigned char clockSelectBits;
pinMode(ledpin,OUTPUT);
noInterrupts();
TCCR1A = 0;
TCNT1 = 30000;
clockSelectBits = _BV(CS12) | _BV(CS10);
TCCR1B |= clockSelectBits;
TIMSK1 |= (1 << TOIE1);
interrupts();
}
void timer1_ovf_isr(void)
{
TCNT1 = 30000;
m++;
}
void loop()
{
delay(5000);
m=0;
while (m <10)
{
digitalWrite(ledpin,LOW);
}
delay(5000);
m=0;
while (m <4)
{
digitalWrite(ledpin,HIGH);
}
}
|
|