我正在 Arduino 中进行寄存器级编程。目标是使用计时器编写我自己的延迟逻辑。这是代码:
#include<avr/io.h>
int main()
{
DDRB = (1<<PORTB5);
TCCR1B = (1<<CS12);
while(1)
{
if(TCNT1 >= 31250)
{
PORTB ^= (1<<PORTB5);
TCNT1 = 0;
}
}
return 0;
}
上面的程序是让Arduino在不使用延迟功能的情况下引入延迟并且它工作正常。但是看看下面的代码。
#include<avr/io.h>
void setup()
{
DDRB = (1<<PORTB5);
TCCR1B = (1<<CS12);
}
void loop()
{
if(TCNT1 >= 31250)
{
PORTB ^= (1<<PORTB5);
TCNT1 = 0;
}
}
当我这样写时,程序正在编译,但 Arduino 中没有闪烁。与上述代码类似的代码运行正常时可能会出现什么问题?
#include <util/delay.h>
void setup()
{
DDRB = (1<<PORTB5);
}
void loop()
{
PORTB ^= (1<<PORTB5);
_delay_ms(500);
}