使用AD7689芯片采集INT4通道值AD值,使用3.3V外部电压源,获取到的结果AD数值总是不断增大

unsigned short AD7689_gpiospireadword_writeL14bitword(unsigned short data)   
{

 int i=0;        
unsigned short temprev = 0, tempsend = 0;
tempsend = data;
             
tempsend = tempsend << 2;
for (i=0;i<14;i++)         
{

                            
temprev = temprev << 1;

                            
if (MISO_BIT!=0)

                                           
temprev = temprev + 1;

                            
else

                                           
;

 

                            
if(0x8000 == (tempsend & 0x8000))

                                           
SET_MOSI();

                            
else

                                           
CLR_MOSI();

                            
tempsend = tempsend << 1;

                            
SET_SCK();

                            
CLR_SCK();          //falling edge
for MSB-1, ...

                            
CLR_MOSI();       //MOSI idle low

             
}

                            
for (i=14;i<16;i++)

             
{
                        
temprev = temprev << 1;                         
if (MISO_BIT!=0)                                      
temprev = temprev + 1;                          
else

                                          
;
                            
SET_SCK();
                         
CLR_SCK(); 
}             
return temprev;

}

这是什么代码,这么乱,能编译?

如果你的代码能正常编译运行的话
可以修改下第 19 行,和第 65行,将 temprev = temprev + 1; 改成
temprev = temprev | 1;

你先确定参数data的值没有一直增加,如果不是输入的原因,固定一个data的值,一直调用这个函数看返回值是不是递增,如果还是递增那就是这个函数的原因,通过打印一行一行的调试不就可以看出哪里的问题了吗