Serial port 89s52与超级终端的串行接口。。。获取垃圾值

Serial port 89s52与超级终端的串行接口。。。获取垃圾值,serial-port,embedded,microcontroller,robotics,8051,Serial Port,Embedded,Microcontroller,Robotics,8051,我需要将数据从AT89s52串行传输到PC的超级终端。 为此,我制作了一个示例程序,通过在89s52微控制器中编程下面给定的代码,并通过串行端口将其连接到我的PC,在我的PC超级终端上打印Hello。现在,当我为各自的端口打开超级终端时,我应该看到屏幕上多次打印Hello,但实际上我看到的是一些正在打印的垃圾数据。 这是我使用的代码 #include < AT89X52.H> #include < STDLIB.H> #include < STDIO.H>

我需要将数据从AT89s52串行传输到PC的超级终端。 为此,我制作了一个示例程序,通过在89s52微控制器中编程下面给定的代码,并通过串行端口将其连接到我的PC,在我的PC超级终端上打印Hello。现在,当我为各自的端口打开超级终端时,我应该看到屏幕上多次打印Hello,但实际上我看到的是一些正在打印的垃圾数据。 这是我使用的代码

#include < AT89X52.H>

#include < STDLIB.H> 

#include < STDIO.H> 

unsigned int i; 

void main (void) 

{ 

TMOD = 0x20; 

SCON = 0x50; 

TH1 = 0xFD; 

TL1 = 0xFD; 

TR1 = 1; 

TI = 1; 

P1 = 0; 

while (1) 

{ 

puts("Hello\r"); 

P1 ^= 0x01; /* Toggle P1.0 each time we print */ 

for(i=0;i<25000;i++); 

} 

} 
在超级终端中,我没有得到正确的输出,即Hello。相反,我看到了一些垃圾角色。。
有人能帮忙吗?

你能看到P1正在切换吗?我宁愿先发送一个字符,然后用示波器观察发送的内容。您应该会看到一个数字信号,该信号对应于从micro的TX引脚分离出来的字符的ASCII值。您还可以使用示波器检查波特率的精确值。如果您确信正确的值是以正确的波特率发送的,则很可能是您的连接不良,或者波特率应该稍微改变

您是否匹配了波特率和每端的停止位数?是的。。它的9600和停止位=1,也被很好地覆盖了,你想问这样的问题的网站。如果你不确定哪一个速率合适,试着在你的微控制器和超级终端中通过反复试验来改变波特率。水晶频率是多少?