读出来数据乱跳,不知道是不是我的驱动问题,搞过的帮我看看。
//****************************************************************************
//读AD数据 AD7684 0-65535
//**************************************************************
//数据采集
//
//*************************************************************
unsigned int read_analog(void) //数据采集
{
unsigned char i;
unsigned int q;
q=0;
AD_CS_L;
delay(130);
AD_CLK_H;
PORTD&=~BIT(7); //输入低 out
// PORTD|=BIT(7);
delay(100);
// AD_CLK_L;
// delay(130);
for(i=0;i<4;i++)
{
AD_CLK_H;
delay(110);
AD_CLK_L;
delay(110);
}
//读AD7684数据
for(i=0;i<16;i++)
{
AD_CLK_H;
delay(110);
AD_CLK_L;
delay(110);
if(0x80==(PIND&0x80))
{
q=(q<<1);
q=(q+1);
}
else if(0x00==(PIND&0x80))
{
q=(q<<1);
}
else ;
}
AD_CLK_H;
delay(110);
AD_CLK_L;
delay(110);
AD_CS_H;
delay(110);
return(q);
}
|