谁帮小弟我看看下面delay函数中的有关问题,为什么小弟我的函数没法延时,有关问题已经注释在上面了

哪位高手帮我看看下面delay函数中的问题,为什么我的函数没法延时,问题已经注释在上面了;
#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语句也会出问题?
}
}

------解决方案--------------------
你把编译器优化调低点或关掉试试看
------解决方案--------------------
有时候,编译器优化代码,能够提高程序的运行效率;
这里,编译器可能将延时当作无用代码优化掉,所以你可以关闭优化试试。