打印

51串口通信问题,郁闷之极!

[复制链接]
2292|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
457878|  楼主 | 2007-8-7 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这段代码有问题吗?收不到数据,郁闷之极!
(波特率绝对正确,上位机发出的波形正常!)


/*********************************************************************
串口初始化(由用户调用)
*********************************************************************/
void Init_UART()//串口初始化
{
    TMOD=(TMOD & 0x0F)|0x20;    //定时器1工作在模式2
    SCON=0x50;    //串口模式1,允许接收
    ES=0;        //禁止串行中断
    PCON |= 0x80;    //串口双倍速
    TH1=0xF4;
    TL1=0xF4;             //串口波特率为4800 bps at 11.0592MHz
    TR1=1;        //启动定时器1
}
void main()
{
    unsigned char tmp;
    Init_UART();
    while(1)
    {
        while(!RI);
        RI = 0;
        tmp = SBUF;
        SBUF = tmp;
        while(!TI);
        TI = 0;
    }
}

相关帖子

沙发
457878|  楼主 | 2007-8-7 10:55 | 只看该作者

开始怀疑STC51单片机的串口...

使用软串口试试!

使用特权

评论回复
板凳
457878|  楼主 | 2007-8-7 11:26 | 只看该作者

经过试验,软串口是可以的:

说明STC51的硬串口有问题?或许是STC的串口不是标准串口?或者其实现出了问题?希望STC的斑竹看到能解释下。

使用特权

评论回复
地板
mikesullen| | 2007-8-7 12:00 | 只看该作者

不喜欢看代码

问题肯定是在自己的程序。。。

使用特权

评论回复
5
457878|  楼主 | 2007-8-7 14:21 | 只看该作者

4楼很武断,做事不能这样子的

使用特权

评论回复
6
udbit18| | 2007-8-7 16:28 | 只看该作者

子程序

这是C语言,对我有难度,但好像是子程序有点问题吧???

使用特权

评论回复
7
lypd96| | 2007-8-7 18:42 | 只看该作者

RE:

一定是楼主的程序问题,如一个单片机连串口都做不好,那卖给谁,而且STC的是靠串口下载程序的,如串口不能用,那你的程序怎么写进去的.
退一万步讲,就算是串口有问题,也轮不到你发现,因为这个MCU出来好几年了,有问题也早解决了

使用特权

评论回复
8
erhui_cn| | 2007-8-8 16:17 | 只看该作者

re

1.首先,将你的电脑串口23脚接起来试下是否正常;

2.检查你的串口调试软件设置的单片机设置是否一致;

3.单片机串口出来的232电路有没有问题.

使用特权

评论回复
9
lbx_00| | 2007-8-8 20:05 | 只看该作者

串口持续发送#0AAH,

用示波器察看,检查一下波特率,顺便也看一下波形,还有,您说收数据有问题,是不是指的没有返回码,如果是,发送也不能够排出。

检查您的电气特性,波特率,通信模式,实验是不会出鬼的

使用特权

评论回复
10
xzl| | 2007-8-9 08:17 | 只看该作者

加一句 REN=1;

使用特权

评论回复
11
457878|  楼主 | 2007-8-10 09:27 | 只看该作者

问题解决了!

都是看门狗惹的祸!太不听话,杀掉给大家吃了算了!

这样就好了:

while(1)
{
    while(!RI)
    {
        WDTC();
    }
    RI=0;
    tmp = SBUF;
    Led_Test();
    SBUF = tmp;
    while(!TI);TI=0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

269

主题

883

帖子

3

粉丝