msdmqht 2019-10-13 11:42 采纳率: 0%
浏览 278
已采纳

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条回答

  • 智者知已应修善业 2019-10-13 22:49
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题