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的值,一直调用这个函数看返回值是不是递增,如果还是递增那就是这个函数的原因,通过打印一行一行的调试不就可以看出哪里的问题了吗