C51通过串口向计算机发送数据时收到规则乱码,请高手指点!

fjw10245   2007-6-18 15:45 楼主
void main()
{
unsigned char Message;
//init
SP=0x60;
SCON = 0x50;
TMOD = 0x20; // timer 1 mode 2 auto reload
TH1= 0xfa; // 4800 8n1
TL1=0xfa;
PCON=0x00;
TR1 = 1; // run timer1 TR1=1;
while(1)
{
  REN=1;  
  while(!RI){};  
  RI =0;
  Message=SBUF;  

  SBUF=Message;
  while(!TI){};
  TI=0;
}
}
我用的4800拨特率,晶振11.0592
我用C51向计算机发送单个字节时怎么老是乱码,发01显示81,发11显示B1,只有发F0,F1等是对的,好象高位自动变为1了

回复评论 (5)

你发的是8位数据位,而计算机是7位数据位。
点赞  2007-6-18 15:52
我用串口调试助手的,里面设置的是数据位8位呀,停止1位,校验无
点赞  2007-6-18 15:56
不知道是不是晶体的误差产生的...

您可以这样,微调一下定时器的值?

试试...
至少现在从程序上看是没有问题的
点赞  2007-6-18 16:19
呵呵,问题找到了,原来我的仿真机里面的晶振没设置成用户晶振,导致仿真时用的是系统晶振12M的,而不是用的11M
点赞  2007-6-18 18:49
谢谢你的提醒
点赞  2007-6-18 18:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复