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


/*************************************************************************************
* 编程人员:徐松亮 qq:5387603 email:5387603@qq.com
*************************************************************************************/
#include<reg51.h>

#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&amt;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);
}