www.pudn.com > ad7705xsl.rar > ad7705.c


/************************************************************************************* 
* 编程人员:徐松亮 qq:5387603          email:5387603@qq.com 
*************************************************************************************/ 
#include 
 
#define uchar unsigned char 
#define uint unsigned int 
 
sbit sclk_7705=P2^3; 
sbit dat_7705=P2^0; 
sbit drdy=P2^2;        //转换结束标志DRDY=0; 
//sbit ret=P1^6; 
 
void delay(uint i) 
{ 
	while(--i); 
} 
 
void wr_7705(uchar x)   //写命令字 
{ 
	uchar i; 
  dat_7705=1; 
  sclk_7705=1; 
  for(i=8;i>0;i--) 
	 { 
	  sclk_7705=0; 
	  dat_7705=x&0x80; 
	  sclk_7705=1; 
	  x<<=1; 
   } 
 dat_7705=1; 
} 
 
uchar rd_7705_b()    //读8位数据 
{ 
	uchar x=0; 
	uchar i; 
  dat_7705=1; 
  sclk_7705=1; 
	for(i=8;i>0;i--) 
	 { 
	  x<<=1; 
	  sclk_7705=0; 
	  if(dat_7705)x|=0x01; 
	  sclk_7705=1; 
   } 
  return x; 
} 
 
uint rd_7705()   //读16位数据 
{ 
	uint x=0; 
	uchar i; 
  dat_7705=1; 
  sclk_7705=1; 
	for(i=16;i>0;i--) 
	 { 
	  x<<=1; 
	  sclk_7705=0; 
	  if(dat_7705)x|=0x01; 
	  sclk_7705=1; 
   } 
  return x; 
} 
 
/*void ret_7705() 
{ 
	uchar i; 
	ret=0; 
	for(i=0;i<200;i++); 
	ret=1; 
}*/ 
union 
{ 
	uint a; 
	uchar b[2]; 
}abc; 
/* 
void main() 
{ 
  P2=0xff; 
  //ret_7705(); 
  wr_7705(0xff);      //发至少32个1使芯片复位 
  wr_7705(0xff); 
  wr_7705(0xff); 
  wr_7705(0xff); 
  wr_7705(0xff); 
    wr_7705(0x20);      //通信    选通写时钟寄存器 
	wr_7705(0x02);      //时钟    晶振2.4576MHZ 输出更新频率100HZ  
	wr_7705(0x10);      //通信    选通写设置寄存器 
	wr_7705(0x46); 
//	wr_7705(0x44);      //设置        01     000     1       0       0  
	while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使) 
	wr_7705(0x38); 
	rd_7705(); 
  do{ 
  while(drdy==1); 
  wr_7705(0x38); 
  abc.a=rd_7705(); 
  //P0=abc.b[0]; 
  P0=abc.b[1]; 
 // P2=abc.b[1]; 
  }while(1); 
} 
*/ 
void main() 
{ 
  P2=0xff; 
  //ret_7705(); 
  wr_7705(0xff);      //发至少32个1使芯片复位 
  wr_7705(0xff); 
  wr_7705(0xff); 
  wr_7705(0xff); 
  wr_7705(0xff); 
     
    wr_7705(0x00);      //通讯寄存器 
    wr_7705(0x00);      //校准寄存器对A+,A- 
  
    wr_7705(0x10);      //设置寄存器  MD1 MD0 G2 G1 G0 B/U BUF FSYNC 
//    wr_7705(0x7e);      //01 111 1 1 0  自校准 128增益 单极性 缓冲(允许处理高阻抗源) 滤波器同步 
    wr_7705(0x46);      //01 000 1 1 0  自校准 0增益   单极性 缓冲(允许处理高阻抗源) 滤波器同步 
   
    wr_7705(0x20);      //时钟寄存器  0 0 0 clkdis clkdiv clk fs1 fs0 
	wr_7705(0x04);      //000 0 0 1 10    主时钟不禁止 时钟不分频 晶振1MHZ      输出更新频率50HZ  
//	wr_7705(0x02);      //000 0 0 0 10    主时钟不禁止 时钟不分频 晶振2.4576MHZ 输出更新频率100HZ  
	 
//	wr_7705(0x10);      //通信    选通写设置寄存器 
//	wr_7705(0x46);      //01 000 1 1 0 
 
	//	wr_7705(0x44);      //设置        01     000     1       0       0  
	while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使) 
	wr_7705(0x38); 
	rd_7705(); 
  do{ 
  while(drdy==1); 
  wr_7705(0x38); 
  abc.a=rd_7705(); 
  //P0=abc.b[0]; 
  P0=abc.b[1]; 
 // P2=abc.b[1]; 
  }while(1); 
}