单片机串口通信,发送了无法收到数据(新手求教 )

#include<reg52.h>
/*外部晶振:12MHZ 波特率:4800bit*/
unsigned char flag;
unsigned char a;
void init(){
TMOD=0X20;
TH1=0XF3;
TL1=0XF3;
TR1=1;
SCON=0X50;
PCON=0X80;
EA=1;
ES=1;

}
void main(){
init();
while(1){
if(flag==1){
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
flag=0;
}

};

}

void ser() interrupt 4{

RI=0;
a=SBUF;
flag=1;
}

看下了程序,应该是没什么问题的,虽然波特率设置成4800后,在时钟12MHz情况下有3%误差,但不至于影响通信,尤其只是做实验的前提下。如果使用串口调试助手调试,检查一下波特是否设置为4800,数据格式是否为8-N-1,即无校验位,8位数据和1位停止位。看看调试助手是否勾选了自动清除功能。同时可以查看Rx和Tx计数,如果这两个数字都不是0,证明串口收发正常,只是数据没被隐藏了。另外需要检查串口电缆是否损坏。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-05-02
你用什么接收数据的? PC端的串口调试吗?追问

是呀,光能发送,接收不到数据呀

第2个回答  2014-05-02
最好去论坛问 比如电子发烧友论坛、阿莫论坛