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

📄 ad7705.lst

📁 C51 AD7705程序源码 本源码已经过调试,工作正常,为2005年所编
💻 LST
字号:
C51 COMPILER V7.50   AD7705                                                                12/08/2006 15:05:29 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          sbit sclk_7705=P2^3;
   7          sbit dat_7705=P2^0;
   8          sbit drdy=P2^2;        //转换结束标志DRDY=0;
   9          //sbit ret=P1^6;
  10          
  11          void delay(uint i)
  12          {
  13   1              while(--i);
  14   1      }
  15          
  16          void wr_7705(uchar x)   //写命令字
  17          {
  18   1              uchar i;
  19   1        dat_7705=1;
  20   1        sclk_7705=1;
  21   1        for(i=8;i>0;i--)
  22   1               {
  23   2                sclk_7705=0;
  24   2                dat_7705=x&0x80;
  25   2                sclk_7705=1;
  26   2                x<<=1;
  27   2         }
  28   1       dat_7705=1;
  29   1      }
  30          
  31          uchar rd_7705_b()    //读8位数据
  32          {
  33   1              uchar x=0;
  34   1              uchar i;
  35   1        dat_7705=1;
  36   1        sclk_7705=1;
  37   1              for(i=8;i>0;i--)
  38   1               {
  39   2                x<<=1;
  40   2                sclk_7705=0;
  41   2                if(dat_7705)x|=0x01;
  42   2                sclk_7705=1;
  43   2         }
  44   1        return x;
  45   1      }
  46          
  47          uint rd_7705()   //读16位数据
  48          {
  49   1              uint x=0;
  50   1              uchar i;
  51   1        dat_7705=1;
  52   1        sclk_7705=1;
  53   1              for(i=16;i>0;i--)
  54   1               {
  55   2                x<<=1;
C51 COMPILER V7.50   AD7705                                                                12/08/2006 15:05:29 PAGE 2   

  56   2                sclk_7705=0;
  57   2                if(dat_7705)x|=0x01;
  58   2                sclk_7705=1;
  59   2         }
  60   1        return x;
  61   1      }
  62          
  63          /*void ret_7705()
  64          {
  65                  uchar i;
  66                  ret=0;
  67                  for(i=0;i<200;i++);
  68                  ret=1;
  69          }*/
  70          union
  71          {
  72                  uint a;
  73                  uchar b[2];
  74          }abc;
  75          /*
  76          void main()
  77          {
  78            P2=0xff;
  79            //ret_7705();
  80            wr_7705(0xff);      //发至少32个1使芯片复位
  81            wr_7705(0xff);
  82            wr_7705(0xff);
  83            wr_7705(0xff);
  84            wr_7705(0xff);
  85              wr_7705(0x20);      //通信    选通写时钟寄存器
  86                  wr_7705(0x02);      //时钟    晶振2.4576MHZ 输出更新频率100HZ 
  87                  wr_7705(0x10);      //通信    选通写设置寄存器
  88                  wr_7705(0x46);
  89          //      wr_7705(0x44);      //设置        01     000     1       0       0 
  90                  while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使)
  91                  wr_7705(0x38);
  92                  rd_7705();
  93            do{
  94            while(drdy==1);
  95            wr_7705(0x38);
  96            abc.a=rd_7705();
  97            //P0=abc.b[0];
  98            P0=abc.b[1];
  99           // P2=abc.b[1];
 100            }while(1);
 101          }
 102          */
 103          void main()
 104          {
 105   1        P2=0xff;
 106   1        //ret_7705();
 107   1        wr_7705(0xff);      //发至少32个1使芯片复位
 108   1        wr_7705(0xff);
 109   1        wr_7705(0xff);
 110   1        wr_7705(0xff);
 111   1        wr_7705(0xff);
 112   1          
 113   1          wr_7705(0x00);      //通讯寄存器
 114   1          wr_7705(0x00);      //校准寄存器对A+,A-
 115   1       
 116   1          wr_7705(0x10);      //设置寄存器  MD1 MD0 G2 G1 G0 B/U BUF FSYNC
 117   1      //    wr_7705(0x7e);      //01 111 1 1 0  自校准 128增益 单极性 缓冲(允许处理高阻抗源) 滤波器同步
C51 COMPILER V7.50   AD7705                                                                12/08/2006 15:05:29 PAGE 3   

 118   1          wr_7705(0x46);      //01 000 1 1 0  自校准 0增益   单极性 缓冲(允许处理高阻抗源) 滤波器同步
 119   1        
 120   1          wr_7705(0x20);      //时钟寄存器  0 0 0 clkdis clkdiv clk fs1 fs0
 121   1              wr_7705(0x04);      //000 0 0 1 10    主时钟不禁止 时钟不分频 晶振1MHZ      输出更新频率50HZ 
 122   1      //      wr_7705(0x02);      //000 0 0 0 10    主时钟不禁止 时钟不分频 晶振2.4576MHZ 输出更新频率100HZ 
 123   1              
 124   1      //      wr_7705(0x10);      //通信    选通写设置寄存器
 125   1      //      wr_7705(0x46);      //01 000 1 1 0
 126   1      
 127   1              //      wr_7705(0x44);      //设置        01     000     1       0       0 
 128   1              while(drdy==1);               //自校准  增益1  单极性 不缓冲 不滤波同步(设定就不好使)
 129   1              wr_7705(0x38);
 130   1              rd_7705();
 131   1        do{
 132   2        while(drdy==1);
 133   2        wr_7705(0x38);
 134   2        abc.a=rd_7705();
 135   2        //P0=abc.b[0];
 136   2        P0=abc.b[1];
 137   2       // P2=abc.b[1];
 138   2        }while(1);
 139   1      }


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