📄 ad7705.c
字号:
#include <AT898252.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DIN7705=P3^4; /*数据输入输出为同一端口*/
sbit DOUT7705=P3^4;
sbit CLK7705=P3^5;
sbit AD7705_DRDY=P1^5;
/*全局变量定义*/
extern uchar ADH_1;
extern uchar ADL_1;
extern uchar ADH_2;
extern uchar ADL_2;
/*写AD7705函数*/
void writetoreg7705(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
CLK7705=0;
DOUT7705=(bit)(dat&0x80);
dat<<=1;
_nop_();
CLK7705=1;
_nop_();
_nop_();
}
}
/*读AD7705函数,参数ff=0表示读写1通道,1表示读写2通道*/
void readfromda7705(bit ff)
{
uchar i,tmp,tt;
bit cc;
tmp=0;
if(!ff)
{
writetoreg7705(0x38); /*写通信寄存器,下一次为读数据寄存器通道1*/
AD7705_DRDY=1;
while(AD7705_DRDY);
for(i=0;i<8;i++)
{
tmp<<=1;
DIN7705=1;
_nop_();
_nop_();
_nop_();
CLK7705=0;
_nop_();
_nop_();
_nop_();
CLK7705=1;
_nop_();
cc=DIN7705;
tt=(uchar )cc;
tmp=tmp|tt;
}
ADH_1=tmp;
tmp=0;
for(i=0;i<8;i++)
{
tmp<<=1;
DIN7705=1;
_nop_();
_nop_();
_nop_();
CLK7705=0;
_nop_();
_nop_();
_nop_();
CLK7705=1;
_nop_();
cc=DIN7705;
tt=(uchar )cc;
tmp=tmp|tt;
}
ADL_1=tmp;
}
else
{
writetoreg7705(0x39); /*写通信寄存器,下一次为读数据寄存器通道1*/
AD7705_DRDY=1;
while(AD7705_DRDY);
for(i=0;i<8;i++)
{
tmp<<=1;
DIN7705=1;
_nop_();
_nop_();
_nop_();
CLK7705=0;
_nop_();
_nop_();
_nop_();
CLK7705=1;
_nop_();
cc=DIN7705;
tt=(uchar )cc;
tmp=tmp|tt;
}
ADH_2=tmp;
tmp=0;
for(i=0;i<8;i++)
{
tmp<<=1;
DIN7705=1;
_nop_();
_nop_();
_nop_();
CLK7705=0;
_nop_();
_nop_();
_nop_();
CLK7705=1;
_nop_();
cc=DIN7705;
tt=(uchar )cc;
tmp=tmp|tt;
}
ADL_2=tmp;
}
}
/*AD7705初始化*/
void AD7705_init(bit ff)
{
uchar i;
CLK7705=1;
DIN7705=1; /*数据拉高,为复位做准备*/
for(i=0;i<40;i++)
{
CLK7705=0;
CLK7705=0; /*32周期以上的写1,保证通信寄存器回等待状态*/
}
if(!ff)
{
writetoreg7705(0x20);
writetoreg7705(0x04);
writetoreg7705(0x10);
writetoreg7705(0x44);
}
else
{
writetoreg7705(0x21);
writetoreg7705(0x04);
writetoreg7705(0x11);
writetoreg7705(0x44);
}
AD7705_DRDY=1;
while(AD7705_DRDY);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -