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

📄 ad7705.txt

📁 AD7705的C语言版,已通过测试
💻 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 + -