C51单片机定时器0和串口同时使用 串口接收发送00 00

#include <REGX52.H>

unsigned int p,j,flag=0,ad=0,flag1=0,h;

void Init()
{
    SM0=0;
    SM1=1;
    REN=1;
    TMOD=0x21;
    TH0=(65536-45872)/256;
    TL0=(65536-45872)%256;
    TH1=0xfd;
    TL1=0xfd;

    TR1=1;
    ET0=1;
    EA=1;
    ES=1;
    PS=1;
    PT0=0;
   
}

void main()
{

    Init();
    while(1)
    {

        if(flag1==1)
        {
            flag1=0;        

        if(p==1)
        {
   
        TR0=1;
        }

        }
    }
}

void SS() interrupt 4
{


        RI=0;
        p=SBUF;
        ES=0;
        SBUF=p;
        while(TI==0);
        TI=0;
        ES=1;

        flag1=1;


}
void sss()interrupt 1
{
    TH0=(65536-45872)/256;
    TH1=(65536-45872)%256;
}

第 1次发送接收01后就变成00 00了