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

📄 iic.lst

📁 本人开发的测量水的浊度的仪器
💻 LST
字号:
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN iic.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE iic.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define IIC_C
   2          #include "common.h"
   3          #include "iic.h"
   4          #include "intrins.h"
   5          #include "stdio.h"
   6          
   7          #define AT24CXXPAGELEN 8
   8          
   9          #define nops(); _nop_(); _nop_(); _nop_(); _nop_();
  10          
  11          void start()
  12          {
  13   1              EA = 0;
  14   1              IIC_SDA = 1;
  15   1              IIC_SCL = 1;
  16   1              nops();
  17   1              IIC_SDA = 0;
  18   1              nops();
  19   1              IIC_SCL = 0;
  20   1              EA = 1;
  21   1      }
  22          
  23          void stop()
  24          {
  25   1              EA = 0;
  26   1              IIC_SCL = 0;
  27   1              IIC_SDA = 0;
  28   1              IIC_SCL = 1;
  29   1              nops();
  30   1              IIC_SDA = 1;
  31   1              nops();
  32   1              IIC_SCL = 0;
  33   1              EA = 1;
  34   1      }
  35          /*
  36          void ack()
  37          {
  38                  IIC_SCL = 0;
  39                  IIC_SDA = 0;
  40                  nops();
  41                  IIC_SCL = 1;
  42                  nops();
  43                  IIC_SCL = 0;
  44                  nops();
  45          }
  46          */
  47          void noack()
  48          {
  49   1              EA = 0;
  50   1              IIC_SDA = 1;
  51   1              nops();
  52   1              IIC_SCL = 0;
  53   1              nops();
  54   1              IIC_SCL = 1;
  55   1              nops();
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 2   

  56   1              IIC_SCL = 0;
  57   1              nops();
  58   1              EA = 1;
  59   1      }
  60          
  61          uchar waitack()
  62          {
  63   1              uchar i=255;
  64   1      
  65   1              EA = 0;
  66   1              IIC_SDA = 1;
  67   1      
  68   1              while(i--)
  69   1              {
  70   2                      nops();
  71   2                      if(IIC_SDA == 0)
  72   2                      {
  73   3                              IIC_SCL = 0;
  74   3                              nops();
  75   3                              IIC_SCL = 1;
  76   3                              nops();
  77   3                              IIC_SCL = 0;
  78   3                              nops();
  79   3                              return 1;
  80   3                      }
  81   2              }
  82   1              
  83   1              stop();
  84   1              EA = 1;
  85   1      
  86   1              return 0;
  87   1      }
  88          
  89          void clockout(uchar dat)
  90          {
  91   1              uchar i;
  92   1      
  93   1              EA = 0;
  94   1              
  95   1              for(i=0;i<8;i++)
  96   1              {
  97   2                      IIC_SCL = 0;
  98   2                      nops();
  99   2      
 100   2                      if(dat &0x80)
 101   2                              IIC_SDA = 1;
 102   2                      else
 103   2                              IIC_SDA = 0;
 104   2                      dat <<= 1;
 105   2      
 106   2                      IIC_SCL = 1;
 107   2                      nops();
 108   2      
 109   2                      IIC_SCL = 0;
 110   2                      nops();
 111   2              }
 112   1      
 113   1              EA = 1;
 114   1      }
 115          
 116          uchar clockin()
 117          {
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 3   

 118   1              uchar i;
 119   1              uchar c = 0;
 120   1      
 121   1              EA = 0;
 122   1      
 123   1              for(i=0;i<8;i++)
 124   1              {
 125   2                      c <<= 1;
 126   2      
 127   2                      IIC_SCL = 0;
 128   2                      nops();
 129   2      
 130   2                      IIC_SCL = 1;
 131   2                      nops();
 132   2      
 133   2                      IIC_SDA = 1;
 134   2                      if(IIC_SDA == 1)
 135   2                              c |= 0x01;
 136   2      
 137   2                      IIC_SCL = 0;
 138   2                      nops();
 139   2              }
 140   1      
 141   1              EA = 1;
 142   1      
 143   1              return c;
 144   1      }
 145          
 146          uchar readiic(uchar addr,uchar *pdat)
 147          {
 148   1              uchar c;
 149   1      
 150   1              EA = 0;
 151   1      
 152   1              start();
 153   1      
 154   1              //device address
 155   1              c = 0xa0;
 156   1              clockout(c);
 157   1              if(!waitack()) return 0;
 158   1      
 159   1              //memory address
 160   1              c = addr;
 161   1              clockout(c);
 162   1              if(!waitack()) return 0;
 163   1      
 164   1              start();
 165   1      
 166   1              //device address
 167   1              c = 0xa1;
 168   1              clockout(c);
 169   1              if(!waitack()) return 0;
 170   1      
 171   1              //read data
 172   1              *pdat = clockin();
 173   1      
 174   1              noack();
 175   1      
 176   1              stop();
 177   1      
 178   1              EA = 1;
 179   1      
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 4   

 180   1              return 1;
 181   1      }
 182          /*
 183          uchar readiiccur(uchar *pdat)
 184          {
 185                  uchar c;
 186          
 187                  start();
 188          
 189                  //device address
 190                  c = 0xa1;
 191                  clockout(c);
 192                  if(!waitack()) return 0;
 193          
 194                  //read data
 195                  *pdat = clockin();
 196          
 197                  noack();
 198          
 199                  stop();
 200          
 201                  return 1;
 202          }
 203          */
 204          /*
 205          uchar readiicpage(uchar *pdat,uchar len)
 206          {
 207                  uchar c,i;
 208          
 209                  if(len > AT24CXXPAGELEN)
 210                          return 0;
 211          
 212                  start();
 213          
 214                  //device address
 215                  c = 0xa1;
 216                  clockout(c);
 217                  if(!waitack()) return 0;
 218          
 219                  //read data
 220                  for(i=0; i<len; i++)
 221                  {
 222                          pdat[i] = clockin();
 223                          if(i != len-1)
 224                                  ack();
 225                  }
 226          
 227                  noack();
 228          
 229                  stop();
 230          
 231                  return 1;
 232          }
 233          */
 234          uchar writeiic(uchar addr,uchar dat)
 235          {
 236   1              uchar c;
 237   1      
 238   1              EA = 0;
 239   1      
 240   1              start();
 241   1      
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 5   

 242   1      //device address
 243   1              c = 0xa0;
 244   1              clockout(c);
 245   1              if(!waitack()) return 0;
 246   1      
 247   1      //memory address
 248   1              c = addr;
 249   1              clockout(c);
 250   1              if(!waitack()) return 0;
 251   1      
 252   1      //write data
 253   1              clockout(dat);
 254   1              if(!waitack()) return 0;
 255   1      
 256   1              stop();
 257   1      
 258   1              EA = 1;
 259   1      
 260   1              return 1;
 261   1      }
 262          /*
 263          uchar writeiicpage(uchar addr,uchar *pdat,uchar len)
 264          {
 265                  uchar i,c;
 266          
 267                  if(len > AT24CXXPAGELEN)
 268                          return 0;
 269          
 270                  start();
 271          
 272          //device address
 273                  c = 0xa0;
 274                  clockout(c);
 275                  if(!waitack()) return 0;
 276          
 277          //memory address
 278                  c = addr;
 279                  clockout(c);
 280                  if(!waitack()) return 0;
 281          
 282          //write data
 283                  for(i=0; i<len; i++)
 284                  {
 285                          clockout(pdat[i]);
 286                          if(!waitack()) return 0;
 287                  }
 288          
 289                  stop();
 290          
 291                  return 1;
 292          }
 293          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    330    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.06   IIC                                                                   04/09/2005 13:15:56 PAGE 6   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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