#keil 按键控制流水灯

请问为什么在keil中我用下面代码烧录进89c52单片机,按键控制的流水灯。
但是每次第一个灯按k2向左移一位时,它并没有让第八个灯亮。或者是每次第八个灯按k1向右移一位时,它并没有让第一个灯亮。

void main()
{
    P2=~0x01;
    while(1)
    {
        if(P3_1==0)
        {
        Delay(2);
        while(P3_1==0);
        Delay(2);
        if(P2==~0x80)
        P2=~0x01;
        else
        P2=~(~P2<<1);
        }
        else if(P3_0==0)
        {
        Delay(2);
        while(P3_0==0);
        Delay(2);
        if(P2==~0x01)
        P2=~0x80;
        else
        P2=~(~P2>>1);
        }
        }
    }

但是我写成这样就可以在第一个灯时按k2向左时,让第八个灯亮。在第八个灯时按k1向右时,让第一个灯亮。
这样写就没问题。⬇
能解释一下嘛。

void main()
{
    P2=~0x01;
    while(1)
    {
        if(P3_1==0)
        {
        Delay(2);
        while(P3_1==0);
        Delay(2);
        if(P2_7==0)
        P2=~0x01;
        else
        P2=~(~P2<<1);
        }
        else if(P3_0==0)
        {
        Delay(2);
        while(P3_0==0);
        Delay(2);
        if(P2_0==0)
        P2=~0x80;
        else
        P2=~(~P2>>1);
        }
        }
    }

请指教