【发布时间】:2015-05-21 19:20:20
【问题描述】:
我需要将数据从 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++);
}
}
在超级终端中,我没有得到正确的输出,即你好。相反,我看到了一些垃圾字符.. 有人可以帮忙吗..?
【问题讨论】:
-
你匹配波特率和两端的停止位了吗?
-
是的.. 它的 9600 和停止位 = 1,
-
this question 覆盖得很好,也是您想提出此类问题的网站。
-
如果您不确定哪种速率合适,请尝试通过反复试验来更改您的微控制器和超级终端内的波特率。
-
晶振频率是多少?
标签: serial-port embedded microcontroller robotics 8051