打印

串口问题

[复制链接]
1683|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huchengxtu|  楼主 | 2009-3-23 15:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天调试串口
用的是ZLG的51试验箱 显示字符出现乱码
后来发现规律 要减去0x20;
但是还是会有一些错误 有些字符不对
请问这是为什么?
代码如下
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uchar code trdata[10]={'H','U','C','H','E','N','G',0X00};
void main()

  uchar i;
  uint  j;
  TMOD=0x20;         //9600波特率 定时器1
  TL1=0xFD;TH1=0xFD;
  SCON=0x50;PCON=0x00; //串口工作方式1
  TR1=1;
  while(1){
  i=0;
    while(trdata!=0x00)
    {  
        SBUF=trdata-0x20;
        while(TI==0);
       TI=0;
       i++;
  
    }
   for(j=12500;j>0;j--); 
  }

}

相关帖子

沙发
huchengxtu|  楼主 | 2009-3-23 21:10 | 只看该作者

显示的内容是这样的

XeCHE^GXeCHE^GXeCHE^GXeCHE^GHeCHE^GHeCXE^

使用特权

评论回复
板凳
huchengxtu|  楼主 | 2009-3-23 21:11 | 只看该作者

应该是的

HUCHENG

使用特权

评论回复
地板
huchengxtu|  楼主 | 2009-3-23 21:15 | 只看该作者

如果单独传一个字符就是对的

详细的:
我让SBUF=0x21;
显示的是
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
不解的有两个问题
1.为什么A是0x21 而不是0X41 我所有的字符都要减去0X20,才是正确的?
2.为什么传一个字符数组会出现上面的错误?

使用特权

评论回复
5
benxiaoyu4| | 2009-3-24 11:31 | 只看该作者

应该是波特率的问题

仔细核对一下波特率是否正确

使用特权

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

本版积分规则

14

主题

58

帖子

0

粉丝