while(RI); //接收数据,若字符未接受完,一直等待
{
RI=0;
temp[num]=SBUF;
num++;
endmark=1;
/***************************************************************************************************************
假如你波特率为9600,那么接收一个位时间大概为100us,假如你的单片机执行一条语句1us,
那么你用查询的方式有可能会是你只接收到第一个字节后,就会推出这个while循环.
***************************************************************************************************************/
}
建议你用串口中断的方式来接收多个字节的数据,下面是我之前写过的程序
/******************************************************************************************
串口中断函数
ReData[]: 里是一个字节类型的数组,这里一次只接收4个字节数据.
********************************************************************************************/
void Usart_isr() interrupt 4 using 2
{
if(RI)
{
ReData[ReceiveCount++] = SBUF;
if(ReceiveCount > 3)
{
ReceiveCount = 0;
}
RI = 0;
}
}
温馨提示:答案为网友推荐,仅供参考