导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→近来看一下 这个简单的51单片机串口发送数据的程序哪里错了

* 100757: 近来看一下 这个简单的51单片机串口发送数据的程序哪里错了

   lixiuzhi123 
lixiuzhi123发表的帖子 

 近来看一下 这个简单的51单片机串口发送数据的程序哪里错了
ad采集后的数据从51单片机串口发送到上位机(9600, 8)  我用下面的方法 为什么我在上位机上监视到他发送的8位数据 最高位总是以“1‘开头
 比如:ad之后的数据应该是00    发出去的却是80
          ad之后的数据应该是01   发出去的却是81
         ad之后的数据应该是10    发出去的却是90

#include   <reg51.h>  
sbit clk=P1^4;
sbit di=P1^3;
sbit d0=P1^5;
sbit cs=P1^2;

。。。
。。。

void delay0()
  { data char a;
    for(a=0;a  <5;a++);
   }


void longdelay1()
{ unsigned int i,j;
  for(i=0;i  <6;i++)
         for(j=0;j  <10000;j++);
}


void song( unsigned char a)

  TMOD=0x20;
  TL1=0xfd;
  TH1=0xfd;   
  SCON=0x40;
  PCON=0x00;
  EA=1;ES=1;
  TR1=1;
    SBUF=a;
   while(TI==0);
   TI=0;
  }

 }

。。。
。。。
unsigned char ad()
  { data char shuju;
    data char i;
    cs=1;
    clk=0;
    di=1;            // start bit
    d0=1;
    shuju=0;
    delay0();
    cs=0;
    delay0();
    aclk();         //  start
    di=1;          // sgl/dif bit
    aclk();
   di=0;          // odd/even
   aclk();
   di=0;         // select
   aclk();
   aclk();
   for(i=0;i  <8;i++)
     {delay0();
      clk=1;
      shuju=shuju  <  <1;
     if(d0==1) shuju=shuju | 0x01;
     delay0();
     clk=0;
     }
return(shuju);
  }


。。。。


main()

 {  data unsigned char aaa,bbb;
             。。。。

            。。。。

 while(1)
  {aaa=ad();     //ad转化芯片是八位的        
           a=aaa;
                                song(a);
                                longdelay1();
                                longdelay1();
                                longdelay1();
             
    }
  }




发表时间:2006年12月18日20:55:56

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:啊用了 89c58RD+  感觉很一般  就是便宜
[下一篇帖子]:cadencecadence设计PCB的功能非常强大,本人从朋友那里得到一套cadence使用教程共