串口通信自定义指令问题,求帮助

不知道为啥程序不能是数码管显示,想达到的现象是通过串口通信输入”chuxian:12”数码管显示12

#include <REGX52.H>
#include <string.h>
unsigned int i,date,a,flat,num,count,flat1;
void shumaguan();

void delay(unsigned char x)
{while(x--);}

unsigned int code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned int shuju[20],dat[20];
void uart_init()
{
TMOD|=0X20;
SCON=0X50;
PCON|=0X80;
TH1=0XFA;
TL1=0XFA;
ES=1;
EA=1;
TR1=1;
}

void sendbyte(unsigned char byte)
{
SBUF=byte;
while(TI=0);
TI=0;

}

void main ()
{
uart_init();

while(1)
{
    if(a==1)
        {    if(strstr(shuju,"chuxuan:"))
            {    flat1=1;
                sendbyte(shuju[8]);
                sendbyte(shuju[9]);
                delay(100);
                
            }a=0;
        }
        if(flat1==1)
            shumaguan();
    
    }
}

void uart() interrupt 4
{
if(RI==1)
{
date=SBUF;
if(date!="\n")
{
dat[count++]=date;
}
else
{
for(num=0;num<10;num++)
shuju[num]=dat[num];

    count=0;
     a=1;
    }
    
}RI=0;

}

void shumaguan()
{
for(i=0;i<2;i++)
{
switch(i)
{ case(0):P2_4=1;P2_3=1;P2_2=1;P0=smg[shuju[9]];break;
case(1):P2_4=1;P2_3=1;P2_2=0;P0=smg[shuju[8]];break;

    }
    delay(1);
    P0=0x00;
}

}

#include <REGX52.H>
#include <string.h>
unsigned int i,date,a,flat,num,count,flat1;
void shumaguan();

void delay(unsigned char x)
{while(x--);}

unsigned int code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned int shuju[20],dat[20];
void uart_init()
{
TMOD|=0X20;
SCON=0X50;
PCON|=0X80;
TH1=0XFA;
TL1=0XFA;
ES=1;
EA=1;
TR1=1;
}

void sendbyte(unsigned char byte)
{
SBUF=byte;
while(TI=0);
TI=0;

}

void main ()
{
uart_init();

while(1)
{
    if(a==1)
        {    if(strstr(shuju,"chuxuan:"))
            {    flat1=1;
                sendbyte(shuju[8]);
                sendbyte(shuju[9]);
                delay(100);
                
            }a=0;
        }
        if(flat1==1)
            shumaguan();
    
    }
}

void uart() interrupt 4
{
if(RI==1)
{
date=SBUF;
if(date!="\n")
{
dat[count++]=date;
}
else
{
for(num=0;num<10;num++)
shuju[num]=dat[num];

    count=0;
     a=1;
    }
    
}RI=0;

}

void shumaguan()
{
for(i=0;i<2;i++)
{
switch(i)
{ case(0):P2_4=1;P2_3=1;P2_2=1;P0=smg[shuju[9]];break;
case(1):P2_4=1;P2_3=1;P2_2=0;P0=smg[shuju[8]];break;

    }
    delay(1);
    P0=0x00;
}

}

#include <REGX52.H>
#include <string.h>
unsigned int i,date,a,flat,num,count,flat1;
void shumaguan();

void delay(unsigned char x)
{while(x--);}

unsigned int code smg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned int shuju[20],dat[20];
void uart_init()
{
TMOD|=0X20;
SCON=0X50;
PCON|=0X80;
TH1=0XFA;
TL1=0XFA;
ES=1;
EA=1;
TR1=1;
}

void sendbyte(unsigned char byte)
{
SBUF=byte;
while(TI=0);
TI=0;

}

void main ()
{
uart_init();

while(1)
{
    if(a==1)
        {    if(strstr(shuju,"chuxuan:"))
            {    flat1=1;
                sendbyte(shuju[8]);
                sendbyte(shuju[9]);
                delay(100);
                
            }a=0;
        }
        if(flat1==1)
            shumaguan();
    
    }
}

void uart() interrupt 4
{
if(RI==1)
{
date=SBUF;
if(date!="\n")
{
dat[count++]=date;
}
else
{
for(num=0;num<10;num++)
shuju[num]=dat[num];

    count=0;
     a=1;
    }
    
}RI=0;

}

void shumaguan()
{
for(i=0;i<2;i++)
{
switch(i)
{ case(0):P2_4=1;P2_3=1;P2_2=1;P0=smg[shuju[9]];break;
case(1):P2_4=1;P2_3=1;P2_2=0;P0=smg[shuju[8]];break;

    }
    delay(1);
    P0=0x00;
}

}