89s52与Hyperterminal的串行接口...获取垃圾值

时间:2015-05-21 19:20:20

标签: serial-port embedded microcontroller robotics 8051

我需要将数据从AT89s52串行传输到PC的Hyperterminal。 为此我制作了一个示例程序,通过在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++); 

} 

} 

在Hyper终端中,我没有得到正确的输出,即Hello。相反,我看到一些垃圾字符.. 请有人帮忙吗??

1 个答案:

答案 0 :(得分:0)

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