关于51单片机串口通讯的问题

**请教各位,为啥我复位后发送的都是00而不是我输入的66 ? 如图所示

#include 
void URET_TX(unsigned int key)

{    
        
          SBUF=key;//写入数据进SBUF缓存器
        while(TI==0)//检测标志位,是否置1,如果置1,表示数据传输完成
            {TI=0;}//重置标志位位0
         P2=SBUF;//读取发送过来的SBUF数据
         
//完成上述步骤 重新进入总WHILE循环
                
}


void URET_Tu(void)
 
{     
  PCON |= 0x80;        //使能波特率倍速位SMOD
    SCON = 0x50;        //8位数据,可变波特率
    TMOD &= 0x0F;        //设置定时器模式
    TMOD |= 0x20;        //设置定时器模式
    TL1 = 0x15;        //设置定时初值
    TH1 = 0x15;        //设置定时重载值
    TF1 = 0;        //清除TF1标志
    ET1 = 0;        //禁止定时器1中断
    TR1 = 1;         //允许止定时器1中断
  ES=1;      //串口中断
     
}
void main(void)
{ 
    URET_Tu();

    while(1)
{ 
    URET_TX(0X66);
}
}


img

应该会在上电时随机发送一个数据,这是由于上电时状态不太稳定造成的,解决办法是程序开始加一个几十毫秒的延时。