89C51反向流水失败求解

正向流水正常进行,一按按钮反向流水就把所有灯都点亮了,为什么?错在哪?

图片说明

代码

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit k1=P2^0;//按键 

uchar code display[9]={0xfe,0xfd,0xfb,
                        0xf7,0xef,0xdf,
                        0xbf,0x7f,0xff};  //设置P0口的代码
delay(uint k)//延时
{                           
    uint i,j;
    for(i=0;i<k;i++)
        for(j=0;j<200;j++);
}
void main()
{
    uchar i =0; 
    P0 = 0xFF;

    while(1)
    {
       if(k1==1)
       {
            if(i<=7)//当前位置正向流水
            {   
                P0 = display[i];
                i++;
                delay(200);
            }
            else //返回第一位 
            i=0;
        }
        else
        {
            if(i>=0)//当前位置反向流水
            {   
                P0 = display[i];
                i--;
                delay(200);
            }
            else //返回最后一位 
            i=7;
        }
    }
}

1个回答

添加一句判断if(i>7)i=7;试看

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问