打印

串口通信(发1,电脑接收显示81,发2电脑接收显示82)

[复制链接]
2949|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿飞507|  楼主 | 2015-5-14 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这道地是什么情况,(用8M的晶振)
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i,flag;
void delay(void)   
{
   unsigned char m,n;
         for(m=0;m<200;m++)
          for(n=0;n<250;n++)          
           ;
}
void init_uart(void)
{
        TMOD=0X20;
        TH1=0Xfe;
        TL1=0Xfe;
        TR1=1;
        SCON=0X50;
        EA=1;
        ES=1;
}

void main(void)
{
        init_uart();
        while(1)
        {
       
                if(flag==1)
                {
                        ES=0;
                        flag=0;
                        SBUF=i;
                        while(!TI);
                        TI=0;
                        ES=1;
                }

        }
}

void serial() interrupt 4
{
        RI=0;
        i=SBUF;
        flag=1;
}

相关帖子

沙发
chen499103| | 2015-5-14 15:52 | 只看该作者
波特率是不是不对或者波特率不精确

使用特权

评论回复
板凳
阿飞507|  楼主 | 2015-5-14 16:31 | 只看该作者
波特率我已经算过了,算出来虽然不是整数,但是12M晶振的计算结果也不是整数

使用特权

评论回复
地板
阿飞507|  楼主 | 2015-5-14 16:35 | 只看该作者
256-2,oxfe   波特率为9600

使用特权

评论回复
5
zjsltc844139730| | 2015-5-14 17:02 | 只看该作者
9600波特率按照你的初值装入应该用的是11.0592M的晶振

使用特权

评论回复
6
阿飞507|  楼主 | 2015-5-14 17:11 | 只看该作者
zjsltc844139730 发表于 2015-5-14 17:02
9600波特率按照你的初值装入应该用的是11.0592M的晶振

11.0592M装入的初值是0xfd吧?

使用特权

评论回复
7
ningling_21| | 2015-5-14 17:39 | 只看该作者
为何要用8M的晶振?

使用特权

评论回复
8
zjsltc844139730| | 2015-5-14 17:40 | 只看该作者
阿飞507 发表于 2015-5-14 17:11
11.0592M装入的初值是0xfd吧?

不好意思看错了

不好意思看错了

你的程序有点问题
你的 flag 没有赋初值, 是一个随机数, 是0的几率很小, 导致你第一次while的时候就进入了if语句  然后发送了一个随机的 i 给电脑了

波特率没帮你算  但是看你的结果 波特率应该是正确的

应该是程序的问题

使用特权

评论回复
9
阿飞507|  楼主 | 2015-5-15 08:52 | 只看该作者
ningling_21 发表于 2015-5-14 17:39
为何要用8M的晶振?

串口通信最好是用12M的吗?我身边只有8M的,就用了

使用特权

评论回复
10
阿飞507|  楼主 | 2015-5-15 09:01 | 只看该作者
zjsltc844139730 发表于 2015-5-14 17:40
不好意思看错了

不好意思看错了

我是发一个数给单片机,单片机在返回给电脑,在我发送的时候就被赋值成1了。

使用特权

评论回复
11
ningling_21| | 2015-5-15 09:42 | 只看该作者
阿飞507 发表于 2015-5-15 08:52
串口通信最好是用12M的吗?我身边只有8M的,就用了

用这样的晶振,数据错误很正常

使用特权

评论回复
12
949155525| | 2015-5-15 12:20 | 只看该作者
查推荐波特率表51的

使用特权

评论回复
13
oldda| | 2015-5-15 12:21 | 只看该作者
可以将波特率降低来尝试

使用特权

评论回复
14
阿飞507|  楼主 | 2015-5-15 12:28 | 只看该作者
ningling_21 发表于 2015-5-15 09:42
用这样的晶振,数据错误很正常

以后做串口通信的时候就用11.0592的

使用特权

评论回复
15
阿飞507|  楼主 | 2015-5-15 12:29 | 只看该作者
oldda 发表于 2015-5-15 12:21
可以将波特率降低来尝试

我降低到2400也是不行,还是换成11.0592M的晶振吧,可能是误差太大了

使用特权

评论回复
16
liuxing4585| | 2015-5-15 14:33 | 只看该作者
波特率问题吧

使用特权

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

本版积分规则

36

主题

222

帖子

7

粉丝