下面的程序我找不出错误,但运行结果不正确,请朋友们帮助我找出错误并改正,不胜感激!!本人联系方式:vcwlw@163.com
下面是驱动代码:
sbit AD8_CS= P2^1;
sbit AD8_DI_DO =P2^2;
sbit AD8_CLK = P2^0;
sbit AD8_INPUT =P2^3;
unsigned char AD(unsigned char addr)
{
unsigned char ke,num=0x10,MUX=0x18,count,dat=0;
switch (addr)
{
case 0:{MUX=0X18;break;}
case 1:{MUX=0x1c;break;}
case 2:{MUX=0X19;break;}
case 3:{MUX=0x1d;break;}
case 4:{MUX=0X1a;break;}
case 5:{MUX=0x1e;break;}
case 6:{MUX=0x1b;break;}
case 7:{MUX=0x1f;break;}
}
AD8_CLK=0; _nop_();
AD8_CS=1; _nop_(); _nop_();
AD8_CS=0;_nop_();
for(count=0;count<5;count++)
{
AD8_CLK=0;_nop_();
ke=num>>count;
if(ke&MUX)
{AD8_DI_DO=1;}
else
{AD8_DI_DO=0;}
_nop_();
AD8_CLK=1;
_nop_();_nop_();
}
AD8_CLK=0;
_nop_();_nop_();
AD8_CLK=1;
_nop_();_nop_();
for(count=0;count<8;count++)
{
AD8_CLK=0;
_nop_();
if(AD8_INPUT)
{
dat=dat<<1;
dat=dat|0x01;
}
else
{ dat=(dat<<1);}
AD8_CLK=1;
_nop_();
}
AD8_CS=1;
_nop_();
return dat;
} |