📄 ad7705.txt
字号:
#include <INTRINS.H>
//********************************************
unsigned char ad7705timer;
//********************************************
unsigned int READ7705(void)
{
char i,j;
unsigned int ctemp=0;
CS_7705=0;
DOUT_7705=1;
for(i=0;i<16;i++)
{
SCLK_7705=0;
ctemp=ctemp<<1;
for(j=0;j<20;j++) __nop_();
SCLK_7705=1;
for(j=0;j<20;j++) __nop_();
if(DOUT_7705)
{
ctemp++;
}
}
CS_7705=1;
return(ctemp);
}
//********************************************
void WRITE7705(unsigned char )
{
char i,j;
CS_7705=0;
for(i=0;i<8;i++)
{
DIN_7705=(n & 0x80);
for(j=0;j<20;j++) __nop_();
SCLK_7705=0;
__nop_();
__nop_();
for(j=0;j<20;j++) __nop_();
SCLK_7705=1;
n=(n<<1);
for(j=0;j<20;j++) __nop_();
}
CS_7705=1;
}
/********************************************
初始化AD7705
********************************************/
void INI7705(void)
{
WRITE7705(0xff);
WRITE7705(0xff);
WRITE7705(0xff);
WRITE7705(0xff);
WRITE7705(0xff);
}
/********************************************
bit START_CH1(void)
{
bit temp=0;
INI7705();
WRITE7705(0x20);
WRITE7705(0x0a); //0x0c
WRITE7705(0x10);
WRITE7705(0x44); //setup setup reg.
ad7705timer=0;
while(ad7705timer<50)
{
if(DRDY_7705)
{
temp=1;
ad7705timer=51;
}
}
if(!temp) return(0);
ad7705timer=0;
while(ad7705timer<50)
{
if(!DRDY_7705)
{
return(1);
}
}
return(0);
}
//********************************************
unsigned int READ_CH1(void)
{
idata unsigned int y;
START_CH地区();/////////////////////////////
ad7705timer=0;
while(ad7705timer<50)
{
if(DRDY_7705)
{
ad7705timer=51;
}
}
ad7705timer=0;
while(ad7705timer<50)
{
if(!DRDY_7705)
{
ad7705timer=51;
}
}
WRITE7705(0x38);
y=READ7705();
return y;
}
/********************************************
起动通道
********************************************/
bit START_CH2(void)
{
bit temp=0;
INI7705();
WRITE7705(0x21);
WRITE7705(0x0a); //0x0c
WRITE7705(0x11);
WRITE7705(0x44);
ad7705timer=0;
while(ad7705timer<50)
{
if(DRDY_7705)
{
temp=1;
ad7705timer=51;
}
}
if(!temp) return(0);
ad7705timer=0;
while(ad7705timer<50)
{
if(!DRDY_7705)
{
return(1);
}
}
return(0);
}
/********************************************
读AD7705
读出电压值=REF*Y/0xffff;Y=0x0000~0xffff
********************************************/
unsigned int READ_CH2(void)
{
idata unsigned int y;
START_CH2();/////////////////////////////自己整加部分
ad7705timer=0;
while(ad7705timer<50)
{
if(DRDY_7705)
{
ad7705timer=51;
}
}
ad7705timer=0;
while(ad7705timer<50)
{
if(!DRDY_7705)
{
ad7705timer=51;
}
}
WRITE7705(0x39);
y=READ7705();
return y;
}
//********************************************
bit ERR7705(void)
{ unsigned int n;
/*
INI7705();
WRITE7705(0x20);
WRITE7705(0x0a); //SH1
WRITE7705(0x10);
WRITE7705(0x44); //setup setup reg.
n=0;
while(DRDY_7705){WDI=~WDI; n++;if(n>0xfff){return 1;}}
n=0;
while(!DRDY_7705){WDI=~WDI; n++;if(n>0xfff){return 1;}}
*/
INI7705();
WRITE7705(0x21);
WRITE7705(0x0a); //SH2
WRITE7705(0x11);
WRITE7705(0x44); //setup setup reg.
n=0;
while(DRDY_7705){WDI=~WDI; n++;if(n>0xfff)return 1;}
n=0;
while(!DRDY_7705){WDI=~WDI; n++;if(n>0xfff)return 1;}
return 0;
}
//********************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -