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

📄 iic.lst

📁 一个非常好的微处理器烧录EEPROM的C++ 原代码项目文件,直接可用,一拖一的,成果奉献给广大的底层软件开发者
💻 LST
字号:
C51 COMPILER V7.50   IIC                                                                   07/08/2006 11:59:22 PAGE 1   


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

line level    source

   1          #include        "Publicdef.h"
   2          #include        "publicfunction.h"
   3          
   4          BYTE    IIC_Type;
   5          
   6          BIT     SDA_IN(void)
   7          {
   8   1              switch  (IIC_Type)
   9   1              {
  10   2                      case    IIC_AT24CXX_R:
  11   2                                      return Pin_IIC_Sda_AT24CXX_R;
  12   2                      case    IIC_AT24CXX_D:
  13   2                                      return Pin_IIC_Sda_AT24CXX_D;   
  14   2              }
  15   1      }
  16          
  17          BIT     SCL_IN(void)
  18          {
  19   1              switch  (IIC_Type)
  20   1              {
  21   2                      case    IIC_AT24CXX_R:
  22   2                                      return Pin_IIC_Scl_AT24CXX_R;
  23   2                      case    IIC_AT24CXX_D:
  24   2                                      return Pin_IIC_Scl_AT24CXX_D;   
  25   2              }
  26   1      }
  27          
  28          void    SDA_HIGH(void)
  29          {
  30   1              switch  (IIC_Type)
  31   1              {
  32   2                      case    IIC_AT24CXX_R:
  33   2                                      Pin_IIC_Sda_AT24CXX_R=H_LEVEL;
  34   2                                      break;
  35   2                      case    IIC_AT24CXX_D:
  36   2                                      Pin_IIC_Sda_AT24CXX_D=H_LEVEL;  
  37   2                                      break;
  38   2              }
  39   1      }       
  40          void    SDA_LOW(void)           
  41          {
  42   1              switch  (IIC_Type)
  43   1              {
  44   2                      case    IIC_AT24CXX_R:
  45   2                                      Pin_IIC_Sda_AT24CXX_R=L_LEVEL;
  46   2                                      break;
  47   2                      case    IIC_AT24CXX_D:
  48   2                                      Pin_IIC_Sda_AT24CXX_D=L_LEVEL;  
  49   2                                      break;
  50   2              }
  51   1      }
  52          void    SCL_HIGH(void)
  53          {
  54   1              switch  (IIC_Type)
  55   1              {
C51 COMPILER V7.50   IIC                                                                   07/08/2006 11:59:22 PAGE 2   

  56   2                      case    IIC_AT24CXX_R:
  57   2                                      Pin_IIC_Scl_AT24CXX_R=H_LEVEL; 
  58   2                                      break;
  59   2                      case    IIC_AT24CXX_D:
  60   2                                      Pin_IIC_Scl_AT24CXX_D=H_LEVEL;  
  61   2                                      break;
  62   2              }
  63   1      }
  64          void     SCL_LOW(void)
  65          {
  66   1              switch  (IIC_Type)
  67   1              {
  68   2                      case    IIC_AT24CXX_R:
  69   2                                      Pin_IIC_Scl_AT24CXX_R=L_LEVEL;
  70   2                                      break;
  71   2                      case    IIC_AT24CXX_D:
  72   2                                      Pin_IIC_Scl_AT24CXX_D=L_LEVEL;  
  73   2                                      break;
  74   2              }
  75   1      }
  76          void    IIC_Start(void)
  77          {
  78   1              SDA_HIGH();
  79   1              SCL_HIGH();
  80   1              IIC_DELAY();
  81   1              SDA_LOW();
  82   1              SCL_LOW();
  83   1      }
  84          
  85          void    IIC_Stop(void)
  86          {
  87   1              SCL_HIGH();
  88   1              IIC_DELAY();
  89   1              SDA_HIGH();
  90   1      }
  91          
  92          void     IIC_Ack(BIT Ack)
  93          {
  94   1              if      (Ack)
  95   1              SDA_HIGH();
  96   1              else
  97   1              SDA_LOW();
  98   1              SCL_HIGH();
  99   1              IIC_DELAY();
 100   1              SCL_LOW();
 101   1              SDA_LOW();
 102   1      }
 103          
 104          BIT     IIC_SendByte(BYTE IIC_Data)
 105          {
 106   1              BYTE    DATA    loop;
 107   1              BIT             DATA    Error=0;
 108   1              for     (loop=0;loop<=7;loop++)
 109   1              {
 110   2                      if      (IIC_Data&(0x80>>loop))
 111   2                      SDA_HIGH();
 112   2                      else
 113   2                      SDA_LOW();
 114   2                      SCL_HIGH();
 115   2                      IIC_DELAY();
 116   2                      SCL_LOW();
 117   2                      IIC_DELAY();
C51 COMPILER V7.50   IIC                                                                   07/08/2006 11:59:22 PAGE 3   

 118   2              }
 119   1              SDA_HIGH();
 120   1              SCL_HIGH();
 121   1              IIC_DELAY();
 122   1              if      (SDA_IN()||(SCL_IN()==0))
 123   1              Error=btIIC_ERROR;
 124   1              SCL_LOW();
 125   1              SDA_LOW();
 126   1              return  Error;
 127   1      }
 128          
 129          void    IIC_ReceiveByte(BYTE    *ptIIC_Data)
 130          {
 131   1              BYTE    loop;
 132   1              
 133   1              *ptIIC_Data=0;
 134   1              SDA_HIGH();
 135   1              for     (loop=0;(loop<=7);loop++)
 136   1              {
 137   2                      SCL_LOW();
 138   2                      IIC_DELAY();
 139   2                      SCL_HIGH();
 140   2                      IIC_DELAY();
 141   2                      if      (SDA_IN())
 142   2                      *ptIIC_Data|=(0x80>>loop);
 143   2              }
 144   1              SCL_LOW();
 145   1              SDA_LOW();
 146   1      }
 147          
 148          BIT     IIC_Write(BYTE  Addr,BYTE       SubAddr,BYTE    Number)
 149          {
 150   1              BYTE    DATA    loop;
 151   1              BIT             DATA    Error=btIIC_RIGHT;
 152   1              IIC_Start();
 153   1              if      (IIC_SendByte(Addr))
 154   1              Error=btIIC_ERROR;
 155   1              if      (IIC_SendByte(SubAddr))
 156   1              Error=btIIC_ERROR;
 157   1              for     (loop=0;loop<Number;loop++)
 158   1              {
 159   2                      if      (IIC_SendByte(*ptGpBuffer++))
 160   2                      Error=btIIC_ERROR;              
 161   2              }
 162   1              IIC_Stop();
 163   1              return  Error;
 164   1      }
 165          
 166          BIT     IIC_WriteW(BYTE Addr,WORD       SubAddr,BYTE    Number)
 167          {
 168   1              BYTE    DATA    loop;
 169   1              BIT             DATA    Error=btIIC_RIGHT;
 170   1              IIC_Start();
 171   1              if      (IIC_SendByte(Addr))
 172   1              Error=btIIC_ERROR;
 173   1              if      (IIC_SendByte(Hi_Byte(SubAddr)))
 174   1              Error=btIIC_ERROR;
 175   1              if      (IIC_SendByte(Lo_Byte(SubAddr)))
 176   1              Error=btIIC_ERROR;
 177   1              for     (loop=0;loop<Number;loop++)
 178   1              {
 179   2                      if      (IIC_SendByte(*ptGpBuffer++))
C51 COMPILER V7.50   IIC                                                                   07/08/2006 11:59:22 PAGE 4   

 180   2                      Error=btIIC_ERROR;              
 181   2              }
 182   1              IIC_Stop();
 183   1              return  Error;
 184   1      }
 185          
 186          BIT     IIC_Read(BYTE   Addr,BYTE       SubAddr,BYTE  Number)
 187          {
 188   1              BIT             DATA    Error=0;
 189   1              BYTE    DATA    loop;
 190   1              IIC_Start();
 191   1              if      (IIC_SendByte(Addr))
 192   1              Error=btIIC_ERROR;      
 193   1              if      (IIC_SendByte(SubAddr))
 194   1              Error=btIIC_ERROR;      
 195   1              IIC_Start();
 196   1              if      (IIC_SendByte(Addr+1))
 197   1              Error=btIIC_ERROR;      
 198   1              for     (loop=0;loop<Number;loop++)
 199   1              {
 200   2                      IIC_ReceiveByte(ptGpBuffer++);
 201   2                      IIC_Ack(loop/(Number-1));
 202   2              }
 203   1              IIC_Stop();
 204   1              return  Error;
 205   1      }
 206          
 207          BIT     IIC_ReadW(BYTE  Addr,WORD       SubAddr,BYTE  Number)
 208          {
 209   1              BIT             DATA    Error=0;
 210   1              BYTE    DATA    loop;
 211   1              IIC_Start();
 212   1              if      (IIC_SendByte(Addr))
 213   1              Error=btIIC_ERROR;      
 214   1              if      (IIC_SendByte(Hi_Byte(SubAddr)))
 215   1              Error=btIIC_ERROR;      
 216   1              if      (IIC_SendByte(Lo_Byte(SubAddr)))
 217   1              Error=btIIC_ERROR;      
 218   1              IIC_Start();
 219   1              if      (IIC_SendByte(Addr+1))
 220   1              Error=btIIC_ERROR;      
 221   1              for     (loop=0;loop<Number;loop++)
 222   1              {
 223   2                      IIC_ReceiveByte(ptGpBuffer++);
 224   2                      IIC_Ack(loop/(Number-1));
 225   2              }
 226   1              IIC_Stop();
 227   1              return  Error;
 228   1      }
 229          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    716    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      1       9
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       6
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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