串口发送程序连续发送时,重复发送第一个字符。

   if(temp[0]!=48)
    {
      sendchar(temp[0]);
    }
    sendchar(temp[1]);
    sendchar(temp[2]);
    sendchar('.');
    sendchar(temp[3]);
    delay_ms(1);
    sendchar(0x0a);
    sendchar(0x0d);

这是主函数循环里的程序。

void uart_init()
{
TMOD=0X20; //设置计数器工作方式2
SCON=0X50; //设置为工作方式1
//PCON=0X80; //波特率加倍
ES=1; //打开接收中断
EA=1; //打开总中断
TH1=0XFD; //计数器初始值设置
TL1=0XFD;
TR1=1; //打开计数器
}

void sendstr(u8 *str)
{
while(*str!='\0')
{
SBUF=*str;
while(!TI);
TI=0;
str++;

}

}

void sendchar(u8 chr)
{
SBUF=chr;
while(!TI);
TI=0;
}

这是初始化的一些程序

然后运行后是这样:

img

只会重复发送第一个字符。