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

📄 ad7705.lst

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

  56   1                 unsigned int AD16bit,Token;
  57   1             unsigned char i ;
  58   1             AD_CLK=1; 
  59   1             AD_CS=0;//开始
  60   1             delay();
  61   1             Token=0x80;
  62   1             AD16bit=byteword;
  63   1           for(i=0;i<8;i++)
  64   1              { 
  65   2                 /*if(AD16bit&Token)
  66   2                              AD_IN=1;//输入数据位
  67   2                 else AD_IN=0;
  68   2                 
  69   2                 AD_CLK=1;
  70   2                 delay();
  71   2                 AD_CLK=0;
  72   2                 delay();
  73   2                 AD_CLK=1;
  74   2                 delay();
  75   2                 Token=Token>>1;*/
  76   2                         AD_CLK=0;
  77   2                         delay();
  78   2                         if(AD16bit&Token)
  79   2                              AD_IN=1;//输入数据位
  80   2                 else AD_IN=0;
  81   2                         AD_CLK=1;
  82   2                         delay();
  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          uint getch(uchar chanl)
  91          {
  92   1         uchar count;
  93   1         if(AD_REDY==0)
  94   1         {
  95   2             count++;
  96   2                 if(count==3)
  97   2                     count=0;
  98   2                 if(count==1)
  99   2                    {
 100   3                         writeword(chanl);
 101   3                         ch=readdata();
 102   3                         }
 103   2                 if(count==2)
 104   2                     {
 105   3                     writeword(chanl);
 106   3                         ch=readdata();
 107   3                         }
 108   2         } 
 109   1         return(ch);
 110   1      }
 111          unsigned int readdata()
 112             {     
 113   1           unsigned int AD16bit;
 114   1           unsigned char i,DataH,DataL;
 115   1               DataH=0;
 116   1               DataL=0;
 117   1      //     writeword(0x38); //设置读当前通道数据
C51 COMPILER V7.50   AD7705                                                                05/28/2007 15:49:33 PAGE 3   

 118   1      //     while(AD_REDY==1); //等待数据准备好
 119   1               delay();
 120   1           AD_CLK=1;
 121   1           AD_CS=0;
 122   1           delay();
 123   1           AD16bit=0;
 124   1               AD_OUT=1;
 125   1               for(i=0;i<8;i++)
 126   1               {
 127   2                   AD_CLK=0;
 128   2                       DataH<<=1;
 129   2                       delay();
 130   2                       AD_CLK=1;
 131   2                       delay();
 132   2                       if(AD_OUT==1)
 133   2                           DataH|=0x01;
 134   2      //             DataH++;
 135   2      //               DataH<<=1;
 136   2               }
 137   1               DataH=DataH&0xff;
 138   1               for(i=0;i<8;i++)
 139   1               {
 140   2                   AD_CLK=0;
 141   2                       DataL<<=1;
 142   2                       delay();
 143   2                       AD_CLK=1;
 144   2                       delay();
 145   2                       if(AD_OUT==1)
 146   2                           DataL|=0x01;
 147   2      //             DataL++;
 148   2      //               DataL<<=1;
 149   2               }
 150   1               DataL=DataL&0xff;
 151   1       /*   for(i=0;i<16;i++)
 152   1            {
 153   1      //        AD16bit=AD16bit<<1;
 154   1              AD_CLK=0;
 155   1      //              if(i<15)
 156   1                      AD16bit=AD16bit<<=1;
 157   1              delay();
 158   1                      AD_CLK=1;
 159   1                      delay();
 160   1              if(AD_OUT==1)
 161   1                          AD16bit|=0x01;//读取数据位
 162   1      //                      AD16bit=AD16bit++;//读取数据位
 163   1                      }*/
 164   1             delay();
 165   1             while(AD_REDY==0);
 166   1             AD_CS=1;
 167   1                 AD16bit=DataH*256+DataL;
 168   1      //       AD16bit=DataL;
 169   1             return(AD16bit);
 170   1           }
 171          
 172          /*
 173          读取第1通道或第二通道的AD值
 174          mode:1时读取第1通道值;2时读取第2通道值。
 175          */
 176          void CH1_init(void)
 177          {
 178   1         AD_CS=0;
 179   1         writeword(0x20);//发送写命令序列 clock register
C51 COMPILER V7.50   AD7705                                                                05/28/2007 15:49:33 PAGE 4   

 180   1         AD_CS=1;
 181   1         AD_CS=0;
 182   1      //   writeword(0x09);//设置更新频率
 183   1         writeword(0x0c);//设置更新频率
 184   1         AD_CS=1;
 185   1         AD_CS=0;
 186   1         writeword(0x10);//set up register
 187   1         AD_CS=1;
 188   1         AD_CS=0;
 189   1      //   writeword(0x44);
 190   1         writeword(0x46);
 191   1         AD_CS=1;
 192   1      }
 193          
 194          void CH2_init(void)
 195          {
 196   1         AD_CS=0;
 197   1         writeword(0x21);//发送写命令序列 clock register
 198   1         AD_CS=1;
 199   1         AD_CS=0;
 200   1         writeword(0x0c);//设置更新频率
 201   1         AD_CS=1;
 202   1         AD_CS=0;
 203   1         writeword(0x11);//set up register
 204   1         AD_CS=1;
 205   1         AD_CS=0;
 206   1         writeword(0x46);
 207   1         AD_CS=1;
 208   1      }
 209          

⌨️ 快捷键说明

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