本帖最后由 fp123123 于 2013-5-14 11:32 编辑
恭喜你,原因找到了,你这样的发送速度太低了,你程序里的delay一个都不需要,查一下单片机串口状态寄存器的说明,有一个位是表示SBUF0里面的数据已经发送完成的,你只要把delay改为一个等待循环:while(!发送完);就可以了
如果是用STC的51,参考下面的代码
void UART_Send(unsigned char *sendBuf, unsigned char sendCount)
{
COMM = 1; //控制发送方向的端口,1为发送,0为接收
for(unsigned char c=0; c<sendCount; c++)
{
TI = 0;
SBUF = sendBuf[c];
while(TI==0); // 等待发送完成
}
TI = 0;
COMM = 0;//这里预置初始化为接收状态
}
|