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); }