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

📄 ad7705.lst

📁 AD7705驱动程序
💻 LST
字号:
C51 COMPILER V8.12   AD7705                                                                11/24/2008 10:34:37 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE AD7705
OBJECT MODULE PLACED IN AD7705.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE AD7705.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /////////////////////////////////////////////////////////////////////////////
   2          ////Copyright (c) 2008,重庆大唐测控系统有限公司
   3          ////All rights reserved. 
   4          ////
   5          ////文件名称:AD7705.C 
   6          ////摘    要:
   7          ////         1、使用2.4576M晶体
   8          ////         2、先复位芯片  adc_rest() 
   9          ////         3、再初始化芯片  adc1_init() 
  10          ////         4、读取一个通道的AD值 adc1_read_value()
  11          /////////////////////////////////////////////////////////////////////////////
  12          ////当前版本:1.1.2
  13          ////作    者:yangxd
  14          ////完成日期:2008-11-23
  15          /////////////////////////////////////////////////////////////////////////////
  16          
  17          #include "AD7705.h"
  18          
  19          /************************************************
  20          功能:延时
  21          参数:循环次数
  22          返回:无      
  23          ************************************************/
  24          void adc_delay(unsigned char NUM)                       
  25                  {
  26   1                      for(;NUM>0;NUM--);               
  27   1              }
  28          /************************************************
  29          功能:写入AD芯片一个字节
  30          参数:要写入的命令或参数
  31          返回:无 
  32          ************************************************/
  33          void write_adc_byte(unsigned char chr)
  34          {
  35   1              unsigned char i;
  36   1      
  37   1              for(i=0;i<8;i++)
  38   1              {
  39   2                      ADC_CLK= 0;
  40   2                      chr=chr<<1;
  41   2                      ADC_DI= CY;
  42   2                      ADC_CLK= 1;
  43   2              }
  44   1              ADC_CLK = 1;
  45   1      }
  46          /************************************************
  47          功能:从AD芯片读取一个字(16位)
  48          参数:无
  49          返回:读取的字(16位)
  50          ************************************************/
  51          unsigned int read_adc_word()
  52          {
  53   1              unsigned char i;
  54   1              unsigned int coder = 0;
  55   1      
C51 COMPILER V8.12   AD7705                                                                11/24/2008 10:34:37 PAGE 2   

  56   1              for(i=0;i<16;i++)
  57   1              {
  58   2                      ADC_CLK = 0;
  59   2                      coder = coder<<1;
  60   2                      if(ADC_DO)coder+=1;             
  61   2                      ADC_CLK = 1;
  62   2              }
  63   1              ADC_CLK = 1;
  64   1              return(coder);
  65   1      }
  66          /************************************************
  67          功能:AD芯片复位
  68          参数:无
  69          返回:无
  70          ************************************************/
  71          void adc_rest()
  72          {
  73   1              unsigned char i,j;
  74   1      
  75   1              ADC_DI  = 1;
  76   1              ADC_CLK = 1; 
  77   1              ADC1_CS = 1;
  78   1              ADC2_CS = 1;
  79   1              
  80   1              ADC_RESET = 0;
  81   1              for(i=200;i>0;i--)
  82   1                      for(j=200;j>0;j--);     
  83   1              ADC_RESET = 1;
  84   1      }
  85          /************************************************
  86          功能:AD芯片初始化
  87          参数:calmode      工作模式选择(如:ADC_SELF  ……)
  88                gainsetting  输入增益选择(如:ADC_GAIN_128  ……)
  89                operation    单极性/双极性(如:ADC_BIPOLAR  ……) 
  90                rate         输出更新率(如:ADC_50  ……)
  91          返回:无
  92          ************************************************/
  93          void adc1_init(unsigned char calmode, unsigned char gainsetting, unsigned char operation, unsigned char ra
             -te)
  94          {
  95   1              ADC1_CS = 0;
  96   1              write_adc_byte(0xFF);
  97   1              write_adc_byte(0xFF);
  98   1              write_adc_byte(0xFF);
  99   1              write_adc_byte(0xFF);
 100   1              ADC1_CS = 1;
 101   1              adc_delay(100);
 102   1      
 103   1              ADC1_CS = 0;
 104   1              write_adc_byte( 0x20 );//
 105   1              ADC1_CS = 1;
 106   1              adc_delay(100); 
 107   1      
 108   1              ADC1_CS = 0;
 109   1              write_adc_byte( rate );//
 110   1              ADC1_CS = 1;
 111   1              adc_delay(100);
 112   1      
 113   1              ADC1_CS = 0;
 114   1              write_adc_byte( 0x10 );//
 115   1              ADC1_CS = 1;
 116   1              adc_delay(100);
C51 COMPILER V8.12   AD7705                                                                11/24/2008 10:34:37 PAGE 3   

 117   1      
 118   1              ADC1_CS = 0;
 119   1              write_adc_byte( calmode|gainsetting|operation);//
 120   1              ADC1_CS = 1;
 121   1              adc_delay(100);
 122   1      }
 123          /************************************************
 124          功能:读取AD转换码
 125          参数:通道号   如:1、2
 126          返回:读取的AD转换结果(如果等于零表示正忙)
 127          ************************************************/
 128          unsigned int adc1_read_value(unsigned char ch)
 129          {
 130   1      unsigned int  value;
 131   1              if(!ADC1_DRDY)
 132   1              {
 133   2                      ADC1_CS = 0;
 134   2                      if(ch == 1)
 135   2                              write_adc_byte(0x38);//
 136   2                      else if(ch == 2)
 137   2                              write_adc_byte(0x39);//
 138   2                      else    {ADC1_CS = 1;return 0;}
 139   2                      ADC1_CS = 1;
 140   2                      adc_delay(1);
 141   2                      ADC1_CS = 0;
 142   2                      value = read_adc_word();
 143   2                      ADC1_CS = 1;
 144   2                      return value;
 145   2              }
 146   1              else
 147   1              {
 148   2                      return 0;
 149   2              }
 150   1      }
 151          /************************************************
 152          功能:AD芯片初始化
 153          参数:calmode      工作模式选择(如:ADC_SELF  ……)
 154                gainsetting  输入增益选择(如:ADC_GAIN_128  ……)
 155                operation    单极性/双极性(如:ADC_BIPOLAR  ……) 
 156                rate         输出更新率(如:ADC_50  ……)
 157          返回:无
 158          ************************************************/
 159          void adc2_init(unsigned char calmode, unsigned char gainsetting, unsigned char operation, unsigned char ra
             -te)
 160          {
 161   1              ADC2_CS = 0;
 162   1              write_adc_byte(0xFF);
 163   1              write_adc_byte(0xFF);
 164   1              write_adc_byte(0xFF);
 165   1              write_adc_byte(0xFF);
 166   1              ADC2_CS = 1;
 167   1              adc_delay(100);
 168   1      
 169   1              ADC2_CS = 0;
 170   1              write_adc_byte( 0x20 );//
 171   1              ADC2_CS = 1;
 172   1              adc_delay(100);
 173   1              ADC2_CS = 0;
 174   1              write_adc_byte( rate );//
 175   1              ADC2_CS = 1;
 176   1              adc_delay(100);
 177   1              ADC2_CS = 0;
C51 COMPILER V8.12   AD7705                                                                11/24/2008 10:34:37 PAGE 4   

 178   1              write_adc_byte( 0x10 );//
 179   1              ADC2_CS = 1;
 180   1              adc_delay(100);
 181   1              ADC2_CS = 0;
 182   1              write_adc_byte( calmode|gainsetting|operation);//
 183   1              ADC2_CS = 1;
 184   1              adc_delay(100);
 185   1      }
 186          /************************************************
 187          功能:读取AD转换码
 188          参数:通道号   如:0、1
 189          返回:读取的AD转换结果(如果等于零表示正忙)
 190          ************************************************/
 191          unsigned int adc2_read_value(unsigned char ch)
 192          {
 193   1      unsigned int  value;
 194   1              if(!ADC2_DRDY)
 195   1              {
 196   2                      ADC2_CS = 0;
 197   2                      if(ch == 1)
 198   2                              write_adc_byte(0x38);//
 199   2                      else if(ch == 2)
 200   2                              write_adc_byte(0x39);//
 201   2                      else    {ADC1_CS = 1;return 0;}
 202   2                      ADC2_CS = 1;
 203   2                      adc_delay(1);
 204   2                      ADC2_CS = 0;
 205   2                      value = read_adc_word();
 206   2                      ADC2_CS = 1;
 207   2                      return value;
 208   2              }
 209   1              else
 210   1              {
 211   2                      return 0;
 212   2              }
 213   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    313    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -