微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求助—— STC89C52的串口通讯问题

新手求助—— STC89C52的串口通讯问题

时间:10-02 整理:3721RD 点击:
如题,本小白今天想试一下用STC89C52的串口发送数据给电脑,结果电脑接收到的全是“00”,为什么?代码如下:
#include <reg52.h>
#define uchar unsigned char
uchar i;
void init()
{
        PCON=PCON&0x3f;
        SCON=0x40;
        TMOD=(TMOD&0x0f)|0x20;
        TL0=0xe8;
        TH0=0xe8;
        ET1=0;
        TR1=1;
        ES=1;
        EA=1;
}
void main()
{
        init();
        while(1)
        {
                for(i=0;i<8;i++)
                {
                        SBUF=i;
                        while(!TI);
                        TI=0;
                }
  }
}
希望大家指点迷津,万分感谢(唯一的1积分都献出来了)!下面是出错的截图:


你的定时器初始值设错了吧

谢谢你的解疑,我是按照STC15F2K60S2的波特率设置的,没想到会出错。请问初值与波特率的关系是怎样的?

STC手册上一般都能根据外部晶振查找到波特率设置值。

前辈,你有没有这个芯片的手册,可以发我吗?还有,如果我想晋升点的话应该学什么芯片好呢?虽然89C52的功能也比较全了,但是感觉有点落后了,一些详细的资料都找不到,用起来会因为一些小问题困扰很久。

我以前用的STC15系列。至于晋升,有的人拿钱换时间,有的人拿时间换钱。

波特率是指一秒内传送0或1的个数,初值的大小是根据你定时器的定时时间决定的。通过计算系统时钟脉冲个数来得到你想要的波特率的。这个初值就跟计数个数有关

嗯嗯,谢谢提醒。虽然我既缺时间又缺钱,但是觉得时间更重要点。

谢谢,终于“一知半解”了,我继续研究一下先。

噢!噢噢噢!今天再次看了一下,发现我居然把TH1和TL1写成TH0、TL0了!真的是大头虾

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top