求助单片机高手,正在写一个简单的C语言单片机与PC串口通信程序,但每次单片机发送的数据与串口助手收到的

数据不一样,例如SBUF=0x01,串口助手接收到的是81,SBUF=0X02,接受到的是82,请问应该怎么写程序,才能接收到相应的数?
程序如下:

#include<reg52.h>
#include<intrins.h>
#include "stdio.h"
#define uint unsigned int
#define uchar unsigned char
unsigned char flag,a;

/*=====================*/
/*=====1ms延时=====*/
/*=====================*/
void delay_1_s()
{
uchar loop=10;
uint j;
while(loop--){
j=8375;
while(j--);
}
}

void main()
{
SCON=0X50;
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
while(1)
{

SBUF= 0x02;
while(!TI);
TI=0;
delay_1_s();

}
}

程序没问题。
波率9600BPS ,晶振要用11.0592MHZ,你用12MHZ了吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-09
从现象上来看是在接收时停止位被采样成最高位了。
检查你的波特率设置,此外通讯波特率的精度可能也有问题。
你用的单片机晶振是多少?追问

我是在proteus上进行的仿真,单片机晶振12,波特率9600,还需要怎么设置呢,谢谢回答

第2个回答  2011-10-09
感觉像波特率或是效验位等设置问题,不像程序的问题,另外你串口助手那端的设置最好也说下
第3个回答  2011-10-09
波特率设置与晶振的大小是根据单片机的型号来设的。
相似回答