关于51单片机独立按键控制单片机移位的问题求解

51单片机独立按键这个代码写出来正常应该是独立按键控制LED灯的位移,可是不懂哪里出错写出来变成流水灯,可以指出问题在哪吗?

#include <REGX52.H>
 void Delay(unsigned int xms)        
{
    while(xms--)
    {
        unsigned char i, j;

    i = 2;
    j = 239;
    do
    {
        while (--j);
    } while (--i);
    
    }
    
}

void main()
{
    unsigned char LEDNum = 0;
    P2 = 0xFE;
    while(1)
    {
        if(P3_1 == 0)
        {
            Delay(20);
            while(P3_1 == 0);
            Delay(20);
            LEDNum++ ;
            if(LEDNum>=8)
            
                LEDNum=0;
            P2= ~ (0x01<<LEDNum);
        
        }
        if(P3_0 == 0);
        {
            Delay(20);
            while(P3_0 == 0);
            Delay(20);
            if(LEDNum == 0)
            {
                LEDNum=7;
            }
            else
            {
                LEDNum--;
            }    
            P2 = ~(0x01<<LEDNum);
        }
    }
}

程序贴出来的看不懂,贴个完整的程序,帮你分析一下