急急急!!!!单片机串口通讯问题,返回发送数据,但是返回数据和发送的数据不一样。

#include"reg51.h"
unsigned char m,n;
void main(void)
{
EA=1;//开总开关
ES=1;//开串口中断
TMOD=0x22;//定义TM0D为00100010,为8位方式
SCON=0x50;//01010000
TH1=0xFD;//定义波特率为9600
TL1=0xFD;
TR1=1;//开定时器中断
while(1)//无限循环
{
if(m==1)//如果收到串口数据执行
{
m=0;//
ES=0;//暂时关闭串口中断
//n>>=1;
SBUF=n;//将缓冲中的数据写为n
while(!TI);//正在写入数据中
TI=0;//写入完毕后置TI为0
ES=1;//重新打开串口中断
}
}
}
void chuan(void) interrupt 4
{
while(!RI);
RI=0;
m=1;
n=SBUF;
}

我用STC89C54RD+(40针)返回的数据和发送的数据是一致的,然后把这个程序又写到STC12C2052AD(20针)中,返回的数据就不是发送的数据了,这个是怎么回事?请大家给我详细讲解一下,谢谢。

嘿嘿,我试过了,把晶振换成11.0592的就行了

追问

我用STC89C54RD+也没问题,换成12c2052就出问题啦。这两个的不是通用的吗》

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-02
一般都是波特率不一致造成的,你需要查看一下你的硬件环境比如晶振等。
第2个回答  2012-09-02
如果下位机没有问题建议你换个串口调试软件,我之前用下载软件自带的串口调试功能也是常出问题,
第3个回答  2012-09-02
波特率设置的问题吧!
相似回答