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

📄 ad.lst

📁 0-30v
💻 LST
字号:
C51 COMPILER V8.08   AD                                                                    10/01/2008 23:53:32 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN AD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"reg52.h"
   2          #include"function.h"
   3          #include "intrins.h"
   4          
   5          /****************AD端口定义****************/
   6          sbit  AD_CLK  = P3^2;
   7          sbit  AD_RST  = P3^3;
   8          sbit  AD_DIN  = P3^7;
   9          sbit  AD_DOUT = P3^6;
  10          sbit  AD_DRDY = P3^5;
  11           
  12          /************************************************************************************
  13                                        延时  
  14          ************************************************************************************/
  15          void  delay(uint i)
  16          {
  17   1              for(;i > 0;i--);
  18   1      } 
  19          /************************************************************************************
  20                                        复位AD7705 
  21          ************************************************************************************/
  22          void rst_ad()
  23          {
  24   1              AD_DRDY = 1;
  25   1              AD_CLK  = 1;
  26   1              AD_DIN  = 1;
  27   1              AD_DOUT = 1;
  28   1              AD_RST  = 0;
  29   1              delay(300);
  30   1              AD_RST  = 1;     //  复位电路可以接5V电   
  31   1              delay(500); 
  32   1      }
  33          
  34          /************************************************************************************
  35                                        写1字节到AD7705
  36          ************************************************************************************/
  37          write_ad(uchar i)
  38          {
  39   1              uchar a;
  40   1              for(a = 8;a > 0;a--)
  41   1              {
  42   2                      
  43   2                      if((i & 0x80) == 0)
  44   2                         {AD_DIN = 0;}
  45   2                      else
  46   2                         {AD_DIN = 1;}
  47   2                      i <<= 1;
  48   2                      AD_CLK = 0;
  49   2                      _nop_();
  50   2                      _nop_();
  51   2                      _nop_();
  52   2                      AD_CLK = 1;      
  53   2              }
  54   1      }
  55          
C51 COMPILER V8.08   AD                                                                    10/01/2008 23:53:32 PAGE 2   

  56          /************************************************************************************
  57                                        设置AD7705通道 
  58          *  0 为第一通道 
  59          *  1 为第二通道  
  60          
  61              //MD1(0)  工 作 模 式 
  62                  //MD0(0)      工 作 模 式   
  63                  //G2(0)       增益选择    0     0     0        0        1        1    1        1
  64                  //G1(0)       增益选择        0         0             1        1        0        0    1        1
  65                  //G0(0)       增益选择        0         1             0        1        0        1    0        1
  66                  //                                              1         2             4        8        16   32       64       128
  67              //B/U(0)  单极性/双极性工作。“0”表示选择双极性操作,“1”表示选择单极性工作  
  68                  //BUF(0)      缓冲器控制。“0”表示片内缓冲器短路,缓冲器短路后,电源电流降低  
  69                  //          此位处于高电平时,缓冲器与模拟输入串联,输入端允许处理高阻抗源  
  70                  //FSYNC(1) 滤波器同步  
  71                    
  72          ************************************************************************************/
  73          
  74          void set_7705_ch(bit a)
  75          {
  76   1          if(a == 0)
  77   1              {
  78   2                      write_ad(0x20);//write_ad(0x20);
  79   2                      write_ad(0x05);
  80   2                      write_ad(0x10);//write_ad(0x10);
  81   2                      write_ad(0x44);//write_ad(0x46);//设置40H 双极性方式 44H 单极性方式
  82   2              }
  83   1              else
  84   1              {
  85   2                      write_ad(0x20);//write_ad(0x20);
  86   2                      write_ad(0x05);
  87   2                      write_ad(0x10);//write_ad(0x10);
  88   2                      write_ad(0x44);//write_ad(0x46);//设置40H 双极性方式 44H 单极性方式
  89   2              }       
  90   1      }
  91          
  92          
  93          /************************************************************************************
  94                                        读1字节到AD7705   
  95          ************************************************************************************/
  96          uchar read_ad()
  97          {
  98   1          uchar temp2;
  99   1              uchar a;
 100   1              for(a = 8;a > 0;a--)
 101   1              {
 102   2                      AD_CLK = 0;
 103   2                      _nop_();
 104   2                      _nop_();
 105   2                      _nop_();
 106   2                      AD_CLK = 1;
 107   2              _nop_();
 108   2                      _nop_();
 109   2                      _nop_();
 110   2                      temp2 <<= 1;
 111   2                      if(AD_DOUT == 0)
 112   2                         {temp2 &= 0xfe;}
 113   2                      else
 114   2                         {temp2 |= 0x01;}
 115   2               }
 116   1               return temp2;
 117   1      }
C51 COMPILER V8.08   AD                                                                    10/01/2008 23:53:32 PAGE 3   

 118          
 119          /************************************************************************************
 120                            读AD7705转换后的数据  
 121          // 把DRDY位换为读内部寄存器状态位,显示不正常  
 122          ************************************************************************************/
 123          
 124          uint read_AD_data(uchar y)
 125          {
 126   1          uint  temp;
 127   1              uchar i;
 128   1              write_ad(y);
 129   1              while(AD_DRDY);
 130   1              for(i = 16;i > 0;i--)
 131   1              {
 132   2                      AD_CLK = 0;
 133   2                      _nop_();
 134   2                      _nop_();
 135   2                      _nop_();
 136   2                      AD_CLK = 1;
 137   2              _nop_();
 138   2                      _nop_();
 139   2                      _nop_();
 140   2                      temp <<= 1;
 141   2                      if(AD_DOUT == 0)
 142   2                         {temp &= 0xfffe;}
 143   2                      else
 144   2                         {temp |= 0x0001;}
 145   2         }
 146   1         return temp;                 
 147   1      }
 148          


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


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

⌨️ 快捷键说明

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