【问题标题】:serial interfacing of 89s52 with Hyperterminal... getting garbage values89s52 与超级终端的串行接口...获取垃圾值
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2023-03-31
    相关资源
    最近更新 更多