单片机流水灯只循环一次,是哪出了问题吗?

用Proteus仿真这个流水灯,但是运行就流动了一次,然后就定在P2.0不动了,是哪里的循环没写好吗?


#include"reg51.h"
sbit LED0=P2^0;


void delay_ms (unsigned int x)
{
     unsigned char i;
    while (x--)
    {  
        for (i=0;i<120;i++);
    }
   
}

void led ()
{
    int i=0;
  for(i=0;i<8;i++)
    {
     P2=~(0x01<delay_ms (50);
    }
}

void mian ()
{    
        while (1)
     {
        led();
     }
}

img

不然你试一下这种移位的方法


#include"reg51.h"
sbit LED0=P2^0;
void delay_ms (unsigned int x)
{
     unsigned char i;
    while (x--)
    {  
        for (i=0;i<120;i++);
    }
}
void led ()
{
    unsigned int i,temp;
    temp = 0xfe;
    for(i=0;i<8;i++)
    {
        P2=temp;
        delay_ms(50);
        temp =_crol_(temp,1);
    }
}
void mian ()
{    
     while (1)
     {
        led();
     }
}