#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar led_all;
void delay(uint sm);
void main()
{
led_all = 0xfe;
P0 = led_all;
while(1)
{
delay(400);
led_all = _crol_(led_all,1);
P0 = led_all;
}
}
void delay(uint sm)
{
uint x, y=115;
for(x = sm;x>0;x--) //为什么这句改为 for(x=0;x<sm;x++)就有问题????
{
//while(y--)
//;
for(y = 0; y<115; y++); //为什么把这句改为上面的while语句也会出问题?
}
}
------解决方案--------------------
你把编译器优化调低点或关掉试试看
------解决方案--------------------
有时候,编译器优化代码,能够提高程序的运行效率;
这里,编译器可能将延时当作无用代码优化掉,所以你可以关闭优化试试。