| 
 
| 各位大侠好,我用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);
 }
 
 | 
 |