我用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++);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>