本人所用编译器:Atmel studio 6.0
芯片型号:mega328p
本人写了以下闪烁LED灯的程序,但是不论我怎么改delay的参数,延时时间都不变,而且pin输出波形明显不对。奇怪的是如果我用库里自带的延时函数就一切正常。或者我在while(1)中不调用我写的延时,而是直接用 x=60000;while(x--);实现延时功能,芯片输出也是一切正常。请问这是什么原因造成的啊?
#include <avr/io.h>
void delay(long int x)
{
unsigned char i;
for(;x>0;x--)
for(i=250;i>0;i--);
}
int main(void)
{
DDRD=0xFF;
PORTD=0xFF;
while(1)
{
PORTD=0X00;
delay(250);
PORTD=0XFF;
delay(250);
}
} |