各位大侠好,我用ad7730,设计的时候把DIN和DOUT两个引脚连在一起了,结果发现一些问题:发现读数据应该为1的时候,电压输出只有2。67伏,于是我先在DIN引脚上用单片机置1,结果发现读书前7位都是对的,但是第八位不管怎么样都是1,请高手赐教,不胜感激! plus:ad是用中断方式。 程序:#include <reg52.h>
sbit AD7730_SCLK=P0^0; sbit AD7730_DIN=P0^1; sbit AD7730_DOUT=P0^2;
void WriteByteToAd7730(unsigned char WriteData) { unsigned char i; AD7730_CS=0; for(i=0;i<8;i++) { AD7730_SCLK=0; if(WriteData&0x80)AD7730_DIN=1; else AD7730_DIN=0; WriteData=WriteData<<1; AD7730_SCLK=1; } AD7730_DIN=0; AD7730_CS=1; } /* AD7730读寄存器函数 */ unsigned char ReadByteFromAd7730(void) { unsigned char i; unsigned char ReadData; AD7730_CS=0; AD7730_DIN=0; ReadData=0; for(i=0;i<8;i++) { AD7730_DIN=1; //我先在DIN引脚上用单片机置1
AD7730_SCLK=0; _nop_();_nop_();_nop_(); AD7730_SCLK=1; ReadData=ReadData<<1; if(AD7730_DOUT)ReadData+=1; AD7730_DIN=0; //完了再置0
} AD7730_CS=1; return(ReadData); }
|