普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 6125|回复: 4

串口通信显示乱码

 关闭 [复制链接]

1

主题

1

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2018-6-11 10:40:31 | 显示全部楼层 |阅读模式
#include"reg52.h"
typedef unsigned char uchar;
uchar flag,i,dat;
uchar code table[]="I LOVE YOU";

void Ustarint()
{
        TMOD=0x20;
        TH1=0xfd;                //波特率9600
        TL1=0xfd;
        TR1=1;
    SM0=0;
        SM1=1;
        REN=1;
       
        ES=1;
        EA=1;
}
void main()
{
        Ustarint();
        while(1)
        {
          if(flag==1)
          {
                  ES=0;
                for(i=0;i<10;i++)
                {
                        SBUF=table[i];
                        while(!TI);
                        TI=0;
                }
                SBUF=dat;
                while(!TI);
                TI=0;
                ES=1;
                flag=0;


          }
        }
}
void UStar() interrupt 4
{
   
   dat=SBUF;
   RI=0;
   flag=1;


}
串口助手输入I LOVE YOU 显示乱码
回复

使用道具 举报

20

主题

1344

帖子

8379

积分

论坛元老

Rank: 8Rank: 8

积分
8379
发表于 2018-6-12 07:21:17 | 显示全部楼层
如果你的晶振是12M,则最大只能4800的波特率,且必须加倍。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

46

积分

新手上路

Rank: 1

积分
46
发表于 2019-7-29 17:41:54 | 显示全部楼层
HC6800-ES-V2.0 发表于 2018-6-12 07:21
如果你的晶振是12M,则最大只能4800的波特率,且必须加倍。

并非最大4800吧。而且市面上大多的开发教程都是用9600的波特率。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

46

积分

新手上路

Rank: 1

积分
46
发表于 2019-7-29 17:43:56 | 显示全部楼层
同样遇到这个问题,换其他型号的单片机就不会,我用了一下以前的开发板,反而可以。新入手普中的开发板,研究不深。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

46

积分

新手上路

Rank: 1

积分
46
发表于 2019-7-29 17:59:47 | 显示全部楼层
刚刚尝试了一下,可以这么修改:

源程序:

void Ustarint()
{
        TMOD=0x20;
        TH1=0xfd;                //波特率9600
        TL1=0xfd;
        TR1=1;
    SM0=0;
        SM1=1;
        REN=1;
        
        ES=1;
        EA=1;
}
********************************
修改为:
void UsartInit()
{
        SCON=0X50;                        //设置为工作方式1
        TMOD=0X20;                        //设置计数器工作方式2
        PCON=0X00;                        //波特率不加倍
        TH1=0XFf;                                //计数器初始值设置,注意波特率是9600的
        TL1=0XFf;
        ES=1;                                                //打开接收中断
        EA=1;                                                //打开总中断
        TR1=1;                                        //打开计数器
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-25 16:43 , Processed in 0.084606 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表