使用PIC的32位单片机控制ADS8361,时钟频率80MHz,ADS8361设置在模式1工作。然后连续采集十次ADS8361的输出,每次间隔300ms,采集到的十个数,其中有好几对一模一样的数据,而且相同数据没有挨在一起,不知道是不是代码有问题,麻烦帮我看一下,谢谢。代码如下:
unsigned short Read_ADS8361A0(void)
{
unsigned char i;
unsigned short A0_Data = 0,A0_Positive_Negative_Judge = 0;
RD = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 0;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 0;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 0;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
RD = 0;
for(i = 0;i < 16;i ++) //读取16位AD转换后的值,高位在前,所以每读一位是左移
{
A0_Data <<= 1;
CLOCK = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
if(DATAA)
{A0_Data |= 0x01;}
CLOCK = 0;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
}
CLOCK = 1;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
CLOCK = 0;
_nop();
_nop();
_nop();
_nop();
_nop();
_nop();
A0_Positive_Negative_Judge = A0_Data & 0x8000; //判断数据正负,最高位是1为负,返回0x0000,最高位是0为正,返回转换的值
if(A0_Positive_Negative_Judge == 0x0000)
{
return A0_Data;
}
else
{
return 0x0000;
}
}