近来看一下 这个简单的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