⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad7705.c

📁 用于远程控制系统下位机的设置程序
💻 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 + -