c8051f020串口为什么后面会有乱码??

2020-01-27 11:34发布

我用c8051f020做串口通信,但是我发了一堆字符后,他返回来时,出了原来的字符外还有一些乱码跟着,这是为什么啊????
unsigned char a[8000];
unsigned char * pb=&a[0];
unsigned char i,flag;                //显示标志定义
void Uart0_Receive (unsigned char *chr)
{
        if (RI0)
        {
                *chr = SBUF0;
                flag=1;
                }
}
void main(void)
{
        unsigned char key,display;  //按键键值

       
        WDTCN = 0xde;  // 关闭看门狗            
        WDTCN = 0xad;

        SYSCLK_Init ();// 配置系统时钟
        PORT_Init ();  // 端口配置
        LCD_Init();    // 1602C 液晶初始化
        Uart0_Init (96);
        alarm_short();  // 长指示
        EA=1;          // 允许全局中断
        i=0;
        display = 0;   // 变量初始化
        flag = 0;
        LCD_ShowString(0, 1, start_1);//液晶显示初值
        LCD_ShowString(1, 0, start_2);
        while(1)
        {
        while(flag)
        {TI0=1;
        Uart0_SendString (a);
        flag=0;
        }
        }               

}
void UERT_0() interrupt 4
{
if(RI0)
{
Uart0_Receive (pb);
pb++;
RI0=0;
}
}
void Uart0_SendByte (unsigned char value)
{
        while (!TI0);        // 等待发送1个字节数据完成
    SBUF0=value;    // 发送数据到uart0
        TI0=0;                  // 清除中断标志
}

/***********************************************************************************
* 函数名称:Uart0_SendString;
*
* 函数功能描述:Uart0发送字符串;
*              
* 输入参数: unsigned char类型指针,发送数据;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/
void Uart0_SendString (unsigned char  *pt)
{         
        while (*pt)
        {
                Uart0_SendByte (*pt++);
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。