单片机 串口通信 无法将端口数据返送到上位机

软硬条件:89C51&串口调试精灵。
问题背景:想把发给单片机的端口数据(如P2 0xAA)返回到串口调试精灵。
可惜,肉包子打狗,有去无回。十分着急。
程序功能:让unsigned char c依次加1赋给P2口,并返回到精灵。
晶振 12Mhz。波特率2400,n,8,1.
程序:
#include <reg51.h>

//初始化串行口
void csh()
{
SM0=0;
SM1=1;
REN=1;
TI=0;
RI=0;
PCON=0;
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
EA=1;
ET1=0;
ES=1;
TR1=1;
}

void main()
{
int i,j;
char c;
csh();
while(1)
{
TI=0;
P2=c;
SBUF=c;
while(!TI);
TI=0;
for(j=0;j<25;j++)
for(i=0;i<5000;i++);

c++;
}
}

void intrr() interrupt 4
{
char temp;
temp=SBUF;
P3=temp;
RI=0;
}
希望各路神仙,走过路过,千万不要错过---这个助人为乐,自己快乐的好机会。
谢谢!!
东方红二天,你很搞笑嘛,这样赚分,很吃力的

第1个回答  2009-04-24
就经验,接不到数据最大可能是两边的波特率没对上,你在tx和rx上接灯了吗,可以观测数据倒底发没发出来
第2个回答  2009-04-24
//初始化串行口
void csh()
{
SM0=0;
SM1=1;
REN=1;
TI=0;
RI=0;
PCON=0;
SCON=0xD0;///////////////////
TH1=0xF3;
TL1=0XF3;
TMOD=0X20;
EA=1;
ET1=0;
ES=1;
TR1=1;
}本回答被提问者采纳
第3个回答  2009-04-24
晶振不对,为何不用:11.0592MHZ的呢?
第4个回答  2009-04-24
xsvx大股东
相似回答