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

📄 ad7705.lst

📁 C51单片机一个小项目源程序:包含液晶12232驱动,AD7705驱动,按键扫描及单片机内部EEPROM的驱动,是一个比较值得参考的源程序
💻 LST
字号:
C51 COMPILER V7.50   AD7705                                                                09/26/2007 17:19:06 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AD7705
OBJECT MODULE PLACED IN ad7705.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ad7705.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "mylib.h"
   2          /*
   3          编写:bobo
   4                 AD7705寄存器
   5          1:通信寄存器
   6             DRDY  RS2  RS1  RS0  R/W   STBY   CH1  CH0
   7          DRDY:写操作时此位为0。
   8          RS2、RS1、RS0:选择寄存器。000:通信寄存器; 001:设置寄存器; 010:时钟寄存器。
   9          R/W:0写操作;  1读操作.
  10          STBY:等待模式。0正常工作模式.
  11          CH1 CH0:通道选择。
  12          
  13          2:设置寄存器
  14             MD1  MD0  G2 G1 G0 B/U BUF FSYNC
  15          MD1 MD0:校准模式选择。00正常模式; 01自校准模式; 10 零刻度校准模式; 11全刻度校准模式.
  16          G2 G1 G0:增益选择位。
  17          B/U:单极性与双极性选择。0双极,1单极。
  18          BUF:缓冲。1缓冲,0无缓冲。
  19          FSYNC:同步过滤器。
  20          
  21          3:时钟寄存器
  22             ZER0  ZER0  ZER0  CLKDIS  CLKDIV  CLK  FS1  FS0
  23          ZER0:0必须写进该位,才能保证7705的运转正确。
  24          CLKDIS:主时钟禁止位。"1"禁止MCLKOUT脚输出。
  25          CLKDIV:时钟分频位。"1"主时钟二频; "0"不分频。
  26          CLK:时钟位。2.4576M/4.9152M时对应CLK=1;1M/2M时对应CLK=0.
  27          FS0 FS1:数据刷新选择位。应与CLK结合来决定数据刷新速度。
  28          */
  29          
  30          
  31          /*
  32          STC看门狗介绍WDT_CONTR:
  33              --  --  EN_WDT CLR_WDT IDLE_WDT  PS2 PS1 PS0
  34          EN_WDT:看门狗允许位,设置为1时看门狗启动。
  35          CLR_WDT:看门狗清0位,设置为1时看门狗重新计数,硬件将自动清0此位
  36          IDLE_WDT:当设置为1时看门狗定时器在空闲模式下计数;
  37                    当设置为0时看门狗定时器在空闲模式下不计数.
  38          PS2 PS1 PS0:看门狗定时器分频值。
  39          
  40          */
  41          
  42          /* AD7705 */ 
  43          void CLK_Reset()
  44          {
  45   1         uchar i;
  46   1         AD_CLK=1;
  47   1         AD_IN=1;
  48   1         for(i=0;i<40;i++)
  49   1         {
  50   2            AD_CLK=0;
  51   2                AD_CLK=1;
  52   2         }
  53   1      }
  54          void Wait7705(unsigned int t) 
  55          {
C51 COMPILER V7.50   AD7705                                                                09/26/2007 17:19:06 PAGE 2   

  56   1          for( ;t>0 ;t-- ); 
  57   1      } 
  58          
  59          void writeword(unsigned int byteword)
  60              {  
  61   1                 unsigned int AD16bit,Token;
  62   1             unsigned char i ;
  63   1             AD_CLK=1; 
  64   1             AD_CS=0;//开始
  65   1             //delay();
  66   1             Token=0x80;
  67   1             AD16bit=byteword;
  68   1           for(i=0;i<8;i++)
  69   1              { 
  70   2                         /*AD_CLK=0;
  71   2                         delay();
  72   2                         if(AD16bit&Token)
  73   2                              AD_IN=1;//输入数据位
  74   2                 else AD_IN=0;
  75   2                         AD_CLK=1;
  76   2                         delay();
  77   2                         Token=Token>>1;*/
  78   2                         if(AD16bit&Token)
  79   2                            AD_IN=1;
  80   2                         else AD_IN=0;
  81   2                         AD_CLK=0;
  82   2                         AD_CLK=1;
  83   2                         Token=Token>>1;
  84   2                }
  85   1             AD_CLK=1;
  86   1             AD_IN=1;//结束
  87   1             AD_CS=1;
  88   1            }
  89          
  90          
  91          void CH1_init()
  92          {
  93   1         //AD7705_reset();
  94   1         CLK_Reset();
  95   1         writeword(0x20);//发送写命令序列 clock register
  96   1         //writeword(0x0d);//设置更新频率
  97   1        // writeword(0x05);
  98   1         writeword(0x05);
  99   1         writeword(0x10);//set up register
 100   1         writeword(0x42);
 101   1      }
 102          
 103          void CH2_init()
 104          {
 105   1         //AD7705_reset();
 106   1         CLK_Reset();
 107   1         writeword(0x21);//发送写命令序列 clock register
 108   1         writeword(0x05);//设置更新频率
 109   1         writeword(0x11);//set up register
 110   1         //if(polarity==1)
 111   1         writeword(0x42);
 112   1      }
 113          
 114          void AD7705_reset(void)
 115          {
 116   1         //AD_RST=1;
 117   1         //delay();
C51 COMPILER V7.50   AD7705                                                                09/26/2007 17:19:06 PAGE 3   

 118   1         delay();
 119   1         AD_RST=0;
 120   1         delay();
 121   1         delay();
 122   1         AD_RST=1;
 123   1         delay();
 124   1         delay();
 125   1         AD_CS=0;
 126   1      }
 127          
 128          unsigned int ReadDataCh1_Ch2(bit mode)
 129             {     
 130   1           uint AD16bit;
 131   1           uchar i,DataH,DataL; //AD值的高位与低位
 132   1               DataH=0;
 133   1               DataL=0;
 134   1               if(mode==1)
 135   1               {
 136   2                    writeword(0x38);          //第1通道
 137   2                        delay();
 138   2               }
 139   1               if(mode==0)
 140   1               {
 141   2                writeword(0x39);              //第2通道
 142   2                        delay();
 143   2               }
 144   1           while(AD_REDY==1); //等待数据准备好
 145   1               
 146   1               //Led=0;
 147   1               delay();
 148   1           AD_CLK=1;
 149   1           AD_CS=0;
 150   1           delay();
 151   1           AD16bit=0;
 152   1               AD_OUT=1;
 153   1               for(i=0;i<16;i++)
 154   1               {
 155   2                   AD16bit=AD16bit<<1;
 156   2                       AD_CLK=0;
 157   2                       if(AD_OUT==1)
 158   2                          AD16bit=AD16bit|0x01;
 159   2                       AD_CLK=1;
 160   2               }
 161   1               AD_CLK=1;
 162   1               AD_IN=1;
 163   1              /* for(i=0;i<8;i++)
 164   1               {
 165   1                   AD_CLK=0;
 166   1                       delay();
 167   1                       DataH<<=1;
 168   1                       if(AD_OUT==1)
 169   1                           DataH|=0x01;
 170   1                       AD_CLK=1;
 171   1                       delay();
 172   1      
 173   1               }
 174   1               DataH=DataH&0xff;
 175   1               for(i=0;i<8;i++)
 176   1               {
 177   1                   AD_CLK=0;
 178   1                       delay();
 179   1                       DataL<<=1;
C51 COMPILER V7.50   AD7705                                                                09/26/2007 17:19:06 PAGE 4   

 180   1                       if(AD_OUT==1)
 181   1                           DataL|=0x01;
 182   1                       AD_CLK=1;
 183   1                       delay();
 184   1               }      
 185   1           delay();
 186   1           while(AD_REDY==0);
 187   1           AD_CS=1;
 188   1               AD_CLK=1;
 189   1               AD16bit=DataH*256+DataL;               //2个8位字节组合成1个16位字节 */
 190   1           return(AD16bit);
 191   1      }
 192          
 193             void delay()
 194              { 
 195   1            unsigned int j;
 196   1            for(j=0;j<8;j++);
 197   1          }
 198          
 199          void INI7705(void)
 200             {
 201   1           writeword(0xff);
 202   1           writeword(0xff);
 203   1           writeword(0xff);
 204   1           writeword(0xff);
 205   1           writeword(0xff);
 206   1         }
 207          
 208          
 209          
 210          
 211          
 212          
 213          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    280    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       2
   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 + -