led上下四个循环亮

问题遇到的现象和发生背景

我想让led上四个和下四个循环亮

用代码块功能插入代码,请勿粘贴截图
#include
unsigned char led=0,led1=0,FLAG=0,i=0,a,b;

void shezhi()
{
    SCON=0;
    TMOD=0X01;//00000000
    TH0=-50000/256;
    TL0=-50000%256;
    ET0=1;EA=1;//ESÊÊÓÃÓÚ´®ÐпÚÖжÏ
  TR0=1;
}

void delay(unsigned int n)
{
    for(a=0;afor(b=114;b>0;b++);
    }
}

void zhuanhuan()
{ led1=0x00;
    SBUF=led1;
    delay(1);
    led=~led;//0000 1111
    SBUF=led;
    while(!TI)
    {
        TI=0;
  }
    delay(350);
}

void main()

{  
    shezhi();
    while(FLAG==1)
    {
        zhuanhuan();
            
    }
}
void zhongduan() interrupt 1
{ 
    TH0=-50000/256;
    TL0=-50000%256;
    i++;
    while(i==20)
    {
        i=0;
    led=0xf0;//1111 0000
    SBUF=led;
        while(TI==1)
        {FLAG=1;
            TI=0;
            
        }
     }
}
    

运行结果及报错内容

img


他全部都亮了,不知道问题出在哪里

应该是程序死在delay(1)那个延时函数里面了,你上传的这个代码delay函数格式有问题应该是编译不成功的,即使原本的格式能编译,还有for循环应该是for(b=114;b>0;b--),b++就陷入无限循环了。