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

📄 adc.lst

📁 基于51单片机系统
💻 LST
字号:
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 1   


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

line level    source

   1          #include <at89x52.h>
   2          #include "define.h"
   3          
   4          void MUX1_Select(unsigned char Channel)      // 电压信号通道1-8选择
   5          {
   6   1              switch(Channel)
   7   1              {
   8   2                      case 1:
   9   2                              MUX_S2 = 0;
  10   2                              MUX_S1 = 1;
  11   2                              MUX_S0 = 0;
  12   2                              break;
  13   2                      case 2:
  14   2                              MUX_S2 = 0;
  15   2                              MUX_S1 = 0;
  16   2                              MUX_S0 = 1;
  17   2                              break;
  18   2                      case 3:
  19   2                              MUX_S2 = 0;
  20   2                              MUX_S1 = 0;
  21   2                              MUX_S0 = 0;
  22   2                              break;
  23   2                      case 4:
  24   2                              MUX_S2 = 0;
  25   2                              MUX_S1 = 1;
  26   2                              MUX_S0 = 1;
  27   2                              break;
  28   2                      case 5:
  29   2                              MUX_S2 = 1;
  30   2                              MUX_S1 = 0;
  31   2                              MUX_S0 = 0;
  32   2                              break;
  33   2                      case 6:
  34   2                              MUX_S2 = 1;
  35   2                              MUX_S1 = 1;
  36   2                              MUX_S0 = 0;
  37   2                              break;
  38   2                      case 7:
  39   2                              MUX_S2 = 1;
  40   2                              MUX_S1 = 1;
  41   2                              MUX_S0 = 1;
  42   2                              break;
  43   2                      case 8:
  44   2                              MUX_S2 = 1;
  45   2                              MUX_S1 = 0;
  46   2                              MUX_S0 = 1;
  47   2                              break;
  48   2              }
  49   1      }
  50          
  51          void MUX2_Select(unsigned char Channel)      // 电压信号通道9-16选择
  52          {
  53   1              switch(Channel)
  54   1              {
  55   2                      case 9:
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 2   

  56   2                              MUX_S2 = 0;
  57   2                              MUX_S1 = 1;
  58   2                              MUX_S0 = 0;
  59   2                              break;
  60   2                      case 10:
  61   2                              MUX_S2 = 0;
  62   2                              MUX_S1 = 0;
  63   2                              MUX_S0 = 1;
  64   2                              break;
  65   2                      case 11:
  66   2                              MUX_S2 = 0;
  67   2                              MUX_S1 = 0;
  68   2                              MUX_S0 = 0;
  69   2                              break;
  70   2                      case 12:
  71   2                              MUX_S2 = 0;
  72   2                              MUX_S1 = 1;
  73   2                              MUX_S0 = 1;
  74   2                              break;
  75   2                      case 13:
  76   2                              MUX_S2 = 1;
  77   2                              MUX_S1 = 0;
  78   2                              MUX_S0 = 0;
  79   2                              break;
  80   2                      case 14:
  81   2                              MUX_S2 = 1;
  82   2                              MUX_S1 = 1;
  83   2                              MUX_S0 = 0;
  84   2                              break;
  85   2                      case 15:
  86   2                              MUX_S2 = 1;
  87   2                              MUX_S1 = 1;
  88   2                              MUX_S0 = 1;
  89   2                              break;
  90   2                      case 16:
  91   2                              MUX_S2 = 1;
  92   2                              MUX_S1 = 0;
  93   2                              MUX_S0 = 1;
  94   2                              break;
  95   2              }
  96   1      }
  97          
  98          void MUX3_Select(unsigned char Channel)      // 电压信号通道17-21选择
  99          {
 100   1              switch(Channel)
 101   1              {
 102   2                      case 17:
 103   2                              MUX_S2 = 0;
 104   2                              MUX_S1 = 1;
 105   2                              MUX_S0 = 0;
 106   2                              break;
 107   2                      case 18:
 108   2                              MUX_S2 = 0;
 109   2                              MUX_S1 = 0;
 110   2                              MUX_S0 = 1;
 111   2                              break;
 112   2                      case 19:
 113   2                              MUX_S2 = 0;
 114   2                              MUX_S1 = 0;
 115   2                              MUX_S0 = 0;
 116   2                              break;
 117   2                      case 20:
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 3   

 118   2                              MUX_S2 = 0;
 119   2                              MUX_S1 = 1;
 120   2                              MUX_S0 = 1;
 121   2                              break;
 122   2                      case 21:
 123   2                              MUX_S2 = 1;
 124   2                              MUX_S1 = 0;
 125   2                              MUX_S0 = 0;
 126   2                              break;
 127   2              }
 128   1      }
 129          
 130          unsigned int ADC_CH2()      // 电压信号1-8测量 
 131          {
 132   1              unsigned char CtrlByte = 0xa7;
 133   1              unsigned int Data = 0x00;
 134   1              bit bData;
 135   1      
 136   1              unsigned char Temp1;
 137   1              unsigned int Temp2;
 138   1              unsigned char i;
 139   1      
 140   1              AD_CS = 0;    // 开始一次AD转换
 141   1      
 142   1              for(i=0; i<8; i++)    // 发送控制字节
 143   1              {
 144   2                      AD_DCLK = 0;            
 145   2      
 146   2                      if(CtrlByte & 0x80)
 147   2                      {
 148   3                              AD_DIN = 1;
 149   3                      }
 150   2                      else
 151   2                      {
 152   3                              AD_DIN = 0;
 153   3                      }
 154   2      
 155   2                      AD_DCLK = 1;    // DCLK上升延,送出一位数据
 156   2      
 157   2                      Temp1 = CtrlByte << 1;
 158   2                      CtrlByte = Temp1;
 159   2              }
 160   1      
 161   1              AD_DCLK = 0;
 162   1              AD_DIN = 0;
 163   1      
 164   1              for(i=0; i<12; i++)    // 读入转换结果
 165   1              {
 166   2                      AD_DCLK = 1;            
 167   2      
 168   2                      Temp2 = Data << 1;
 169   2                      Data = Temp2;
 170   2      
 171   2                      AD_DCLK = 0;    // DCLK下降延,读入一位数据
 172   2                      bData = AD_DOUT;
 173   2      
 174   2                      if(bData)
 175   2                      {
 176   3                              Data |= 0x0001;
 177   3                      }
 178   2                      else
 179   2                      {
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 4   

 180   3                              Data &= 0xfffe;
 181   3                      }                       
 182   2              }
 183   1      
 184   1              AD_DCLK = 1;
 185   1              AD_DCLK = 0;
 186   1              AD_DCLK = 1;
 187   1              AD_DCLK = 0;
 188   1              AD_DCLK = 1;
 189   1              AD_DCLK = 0;
 190   1              AD_DCLK = 1;
 191   1              AD_DCLK = 0;
 192   1              AD_CS = 1;    // 完成一次AD转换
 193   1      
 194   1              return Data;
 195   1      }
 196          
 197          unsigned int ADC_CH1()      // 电压信号9-16测量 
 198          {
 199   1              unsigned char CtrlByte = 0xd7;
 200   1              unsigned int Data = 0x00;
 201   1              bit bData;
 202   1      
 203   1              unsigned char Temp1;
 204   1              unsigned int Temp2;
 205   1              unsigned char i;
 206   1      
 207   1              AD_CS = 0;    // 开始一次AD转换
 208   1      
 209   1              for(i=0; i<8; i++)    // 发送控制字节
 210   1              {
 211   2                      AD_DCLK = 0;            
 212   2      
 213   2                      if(CtrlByte & 0x80)
 214   2                      {
 215   3                              AD_DIN = 1;
 216   3                      }
 217   2                      else
 218   2                      {
 219   3                              AD_DIN = 0;
 220   3                      }
 221   2      
 222   2                      AD_DCLK = 1;    // DCLK上升延,送出一位数据
 223   2      
 224   2                      Temp1 = CtrlByte << 1;
 225   2                      CtrlByte = Temp1;
 226   2              }
 227   1      
 228   1              AD_DCLK = 0;
 229   1              AD_DIN = 0;
 230   1      
 231   1              for(i=0; i<12; i++)    // 读入转换结果
 232   1              {
 233   2                      AD_DCLK = 1;            
 234   2      
 235   2                      Temp2 = Data << 1;
 236   2                      Data = Temp2;
 237   2      
 238   2                      AD_DCLK = 0;    // DCLK下降延,读入一位数据
 239   2                      bData = AD_DOUT;
 240   2      
 241   2                      if(bData)
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 5   

 242   2                      {
 243   3                              Data |= 0x0001;
 244   3                      }
 245   2                      else
 246   2                      {
 247   3                              Data &= 0xfffe;
 248   3                      }                       
 249   2              }
 250   1      
 251   1              AD_DCLK = 1;
 252   1              AD_DCLK = 0;
 253   1              AD_DCLK = 1;
 254   1              AD_DCLK = 0;
 255   1              AD_DCLK = 1;
 256   1              AD_DCLK = 0;
 257   1              AD_DCLK = 1;
 258   1              AD_DCLK = 0;
 259   1              AD_CS = 1;    // 完成一次AD转换
 260   1      
 261   1              return Data;
 262   1      }
 263          
 264          unsigned int ADC_CH0()      // 电压信号17-21测量 
 265          {
 266   1              unsigned char CtrlByte = 0x97;
 267   1              unsigned int Data = 0x00;
 268   1              bit bData;
 269   1      
 270   1              unsigned char Temp1;
 271   1              unsigned int Temp2;
 272   1              unsigned char i;
 273   1      
 274   1              AD_CS = 0;    // 开始一次AD转换
 275   1      
 276   1              for(i=0; i<8; i++)    // 发送控制字节
 277   1              {
 278   2                      AD_DCLK = 0;            
 279   2      
 280   2                      if(CtrlByte & 0x80)
 281   2                      {
 282   3                              AD_DIN = 1;
 283   3                      }
 284   2                      else
 285   2                      {
 286   3                              AD_DIN = 0;
 287   3                      }
 288   2      
 289   2                      AD_DCLK = 1;    // DCLK上升延,送出一位数据
 290   2      
 291   2                      Temp1 = CtrlByte << 1;
 292   2                      CtrlByte = Temp1;
 293   2              }
 294   1      
 295   1              AD_DCLK = 0;
 296   1              AD_DIN = 0;
 297   1      
 298   1              for(i=0; i<12; i++)    // 读入转换结果
 299   1              {
 300   2                      AD_DCLK = 1;            
 301   2      
 302   2                      Temp2 = Data << 1;
 303   2                      Data = Temp2;
C51 COMPILER V8.02   ADC                                                                   08/03/2008 10:54:15 PAGE 6   

 304   2      
 305   2                      AD_DCLK = 0;    // DCLK下降延,读入一位数据
 306   2                      bData = AD_DOUT;
 307   2      
 308   2                      if(bData)
 309   2                      {
 310   3                              Data |= 0x0001;
 311   3                      }
 312   2                      else
 313   2                      {
 314   3                              Data &= 0xfffe;
 315   3                      }                       
 316   2              }
 317   1      
 318   1              AD_DCLK = 1;
 319   1              AD_DCLK = 0;
 320   1              AD_DCLK = 1;
 321   1              AD_DCLK = 0;
 322   1              AD_DCLK = 1;
 323   1              AD_DCLK = 0;
 324   1              AD_DCLK = 1;
 325   1              AD_DCLK = 0;
 326   1              AD_CS = 1;    // 完成一次AD转换
 327   1      
 328   1              return Data;
 329   1      }


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


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

⌨️ 快捷键说明

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