导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:我的串口通信程序为什么显示奇怪结果???[sgsteps]

 *第7285篇: 初学者:我的串口通信程序为什么显示奇怪结果???

  
楼 主:sgsteps 2002年12月27日10:23
 初学者:我的串口通信程序为什么显示奇怪结果???
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
void delay(unsigned int);
uchar idata data[10]={1,0,0,1,'E',0,1,1,0,'e'};

void main()
{
    uchar i;
    TMOD=0x20;
    TL1=0xfd; TH1=0xfd;
    SCON=0xd8;PCON=0x00;
    TR1=1;
    while(1)
        {
        i=0;
        while(data[i]!='e')
            {
            SBUF=data[i];
            while(TI==0);
            TI=0;
            i++;
            delay(500);
            }
        }
}
void delay(unsigned int x)
{
unsigned char j;
while((x--)!=0)
{
for(j=0;j<125;j++)
{;}
}
}
我用串口调试助手V2.2.测试接收的数据怎么是81 80 80 81 85 80 81 81 80或者81 80 80 
81 A5 80 81 81 80,我用的是9600bps,麻烦大侠们指导一下,是不是有什么码制不同的问
题???谢谢了

  
2楼:billminux 2002年12月27日13:41
 你的字节格式不对!
你的字节格式不对,TB8的值应该为奇偶校验位,而不应该一直为1。另外,串口测试时一般
发0x55,0xaa数据测试!
  
3楼:tm1300 2002年12月30日21:52
 随便说说
你仔细看看你的SCON,我的手册不在身边,你校对一下,你好象是发送的是11位的数据,
而TB8没有赋值。然后发送和接收通讯方式要一致:数据位,起始位,停止位。
  
4楼:千古醉人 2002年12月31日16:06
 我觉得!
uchar idata data[10]={'1','0','0','1','E','0','1','1','0','e'};

  
5楼:yushi2857 2003年1月4日02:46
 个人认为!!
uchar idata data[10]={1,0,0,1,'E',0,1,1,0,'e'};
好像是11位的 因为最后还有一位是/0"呢?


  
6楼:tm1300 2003年1月4日08:51
 随便说说
先不讨论这个问题,你按照我的建议再试一试,如何?
你改波特率方式1,无奇偶校验,再发送接收一次。
我说的意思是:特率方式3 每个字节(Byte)发送11个(bits),而不是11个字节(Bytes),(bit)
和(Byte)是两个不同的概念。并且根据奇偶校验将PSW.0经过转换赋给TB8。
所以,你说的11是指字节数,那是无关紧要的

>>>>>>对该主题发表你的看法

本主题贴数6,分页: [第1页]


[上一篇主题]:硬件:pci总线

[下一篇主题]:初学者:C51编程:各位大虾 C51编程:请问c51调汇编怎么搞啊?能给个例子吗?