AD用的是CS5513, 但是知道什么原因 采集的AD值跳的厉害,无输入情况下 都从0跳到300多。。。
unsigned long int ADConv()
{
unsigned long Back20bit=0;
unsigned char Front4flag=0;
unsigned char i;
ADCS=1;
_nop_();
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
while(ADSDO) ;
ADCLK=0;
EA=0;
for(i=0;i<4;i++)
{
ADCLK=1;
delay_1(1);
Front4flag=(Front4flag<<1);
if(ADSDO)
Front4flag++;
ADCLK=0;
delay_1(1);
}
if(!Front4flag)
{
for(i=0;i<20;i++)
{
ADCLK=1;
delay_1(1);
Back20bit=(Back20bit<<1);
if(ADSDO)
Back20bit++;
ADCLK=0;
delay_1(1);
}
}
ADCS=1;
EA=1;
return (Back20bit);
} |