单片机串口通信 乱码问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:14:41
使用89S52芯片

波特率设置如下:
TMOD=0x20;
TH1=244;
TL1=244;
SCON=0x40;
PCON=0x00;
TR1=1;
EA=0;
发送程序如下:(发送6个数字)
void send(){for(loop=0;loop<6;loop++){SBUF=sendnum[loop];
while(TI!=1);
num[loop]=loop;//数码管显示用
delay(2);
T1=0;};
TR1=0; }
用串口精灵进行调试,接收设置是16进制接收:
收到的数据为:00 00 00 00 00 00 00

请问各位高手这个是什么问题
uchar sendnum[]={1,2,3,4,5,6,7,8,9};

已经设置过波特率9600个波特,晶振是11.0592M。

如果是单片机对单片机的通信,两者可以正常收发。 是否是程序上存在问题?

回答四楼的话,是TI没有错 不是数字“1”。

void send(){for(loop=0;loop<6;loop++){SBUF=sendnum[loop];
while(TI!=1);
num[loop]=loop;//数码管显示用
delay(2);
T1=0;}; 《==============t1? ti?
TR1=0; }

那就是串口精灵上设置的波特率不对

串口精灵设置的波特率必需和单片机的一致。
否则就会出现乱码。

你用的晶振是多少的啊
晶振必须是11.0592M的才能用

应该是晶振跟波特率设置的问题吧