我需要将数据从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。相反,我看到一些垃圾字符.. 请有人帮忙吗??
答案 0 :(得分:0)
你能看到P1正在切换吗?我宁愿先发一个字符,然后用示波器观察发送的内容。你应该看到一个数字信号对应于从micro的TX引脚分出的字符的ASCII值。您也可以使用示波器检查波特率(精确值)。如果您确信以正确的波特率发送了正确的值,则很可能是您的连接错误,或者波特率可能会稍微改变一下。