新手求助—— 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积分都献出来了)!下面是出错的截图:
#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了!真的是大头虾