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

📄 iic.lst

📁 一个非常好的微处理器烧录EEPROM的C++ 原代码项目文件,直接可用,而且还是一拖八的, 成果奉献
💻 LST
📖 第 1 页 / 共 2 页
字号:
 176   2                                      break;
 177   2                      case    IIC_AT24CXX_D6:
 178   2                                      Pin_IIC_Scl_AT24CXX_D6=L_LEVEL; 
 179   2                                      break;
C51 COMPILER V7.50   IIC                                                                   08/12/2006 10:29:13 PAGE 4   

 180   2                      case    IIC_AT24CXX_D7:
 181   2                                      Pin_IIC_Scl_AT24CXX_D7=L_LEVEL; 
 182   2                                      break;
 183   2                      case    IIC_AT24CXX_D8:
 184   2                                      Pin_IIC_Scl_AT24CXX_D8=L_LEVEL; 
 185   2                                      break;
 186   2              }
 187   1      }
 188          void    IIC_Start(void)
 189          {
 190   1              SDA_HIGH();
 191   1              SCL_HIGH();
 192   1              IIC_DELAY();
 193   1              SDA_LOW();
 194   1              SCL_LOW();
 195   1      }
 196          
 197          void    IIC_Stop(void)
 198          {
 199   1              SCL_HIGH();
 200   1              IIC_DELAY();
 201   1              SDA_HIGH();
 202   1      }
 203          
 204          void     IIC_Ack(BIT Ack)
 205          {
 206   1              if      (Ack)
 207   1              SDA_HIGH();
 208   1              else
 209   1              SDA_LOW();
 210   1              SCL_HIGH();
 211   1              IIC_DELAY();
 212   1              SCL_LOW();
 213   1              SDA_LOW();
 214   1      }
 215          
 216          BIT     IIC_SendByte(BYTE IIC_Data)
 217          {
 218   1              BYTE    DATA    loop;
 219   1              BIT             DATA    Error=0;
 220   1              for     (loop=0;loop<=7;loop++)
 221   1              {
 222   2                      if      (IIC_Data&(0x80>>loop))
 223   2                      SDA_HIGH();
 224   2                      else
 225   2                      SDA_LOW();
 226   2                      SCL_HIGH();
 227   2                      IIC_DELAY();
 228   2                      SCL_LOW();
 229   2                      IIC_DELAY();
 230   2              }
 231   1              SDA_HIGH();
 232   1              SCL_HIGH();
 233   1              IIC_DELAY();
 234   1              if      (SDA_IN()||(SCL_IN()==0))
 235   1              Error=btIIC_ERROR;
 236   1              SCL_LOW();
 237   1              SDA_LOW();
 238   1              return  Error;
 239   1      }
 240          
 241          void    IIC_ReceiveByte(BYTE    *ptIIC_Data)
C51 COMPILER V7.50   IIC                                                                   08/12/2006 10:29:13 PAGE 5   

 242          {
 243   1              BYTE    loop;
 244   1              
 245   1              *ptIIC_Data=0;
 246   1              SDA_HIGH();
 247   1              for     (loop=0;(loop<=7);loop++)
 248   1              {
 249   2                      SCL_LOW();
 250   2                      IIC_DELAY();
 251   2                      SCL_HIGH();
 252   2                      IIC_DELAY();
 253   2                      if      (SDA_IN())
 254   2                      *ptIIC_Data|=(0x80>>loop);
 255   2              }
 256   1              SCL_LOW();
 257   1              SDA_LOW();
 258   1      }
 259          
 260          BIT     IIC_Write(BYTE  Addr,BYTE       SubAddr,BYTE    Number)
 261          {
 262   1              BYTE    DATA    loop;
 263   1              BIT             DATA    Error=btIIC_RIGHT;
 264   1              IIC_Start();
 265   1              if      (IIC_SendByte(Addr))
 266   1              Error=btIIC_ERROR;
 267   1              if      (IIC_SendByte(SubAddr))
 268   1              Error=btIIC_ERROR;
 269   1              for     (loop=0;loop<Number;loop++)
 270   1              {
 271   2                      if      (IIC_SendByte(*ptGpBuffer++))
 272   2                      Error=btIIC_ERROR;              
 273   2              }
 274   1              IIC_Stop();
 275   1              return  Error;
 276   1      }
 277          
 278          BIT     IIC_WriteW(BYTE Addr,WORD       SubAddr,BYTE    Number)
 279          {
 280   1              BYTE    DATA    loop;
 281   1              BIT             DATA    Error=btIIC_RIGHT;
 282   1              IIC_Start();
 283   1              if      (IIC_SendByte(Addr))
 284   1              Error=btIIC_ERROR;
 285   1              if      (IIC_SendByte(Hi_Byte(SubAddr)))
 286   1              Error=btIIC_ERROR;
 287   1              if      (IIC_SendByte(Lo_Byte(SubAddr)))
 288   1              Error=btIIC_ERROR;
 289   1              for     (loop=0;loop<Number;loop++)
 290   1              {
 291   2                      if      (IIC_SendByte(*ptGpBuffer++))
 292   2                      Error=btIIC_ERROR;              
 293   2              }
 294   1              IIC_Stop();
 295   1              return  Error;
 296   1      }
 297          
 298          BIT     IIC_Read(BYTE   Addr,BYTE       SubAddr,BYTE  Number)
 299          {
 300   1              BIT             DATA    Error=0;
 301   1              BYTE    DATA    loop;
 302   1              IIC_Start();
 303   1              if      (IIC_SendByte(Addr))
C51 COMPILER V7.50   IIC                                                                   08/12/2006 10:29:13 PAGE 6   

 304   1              Error=btIIC_ERROR;      
 305   1              if      (IIC_SendByte(SubAddr))
 306   1              Error=btIIC_ERROR;      
 307   1              IIC_Start();
 308   1              if      (IIC_SendByte(Addr+1))
 309   1              Error=btIIC_ERROR;      
 310   1              for     (loop=0;loop<Number;loop++)
 311   1              {
 312   2                      IIC_ReceiveByte(ptGpBuffer++);
 313   2                      IIC_Ack(loop/(Number-1));
 314   2              }
 315   1              IIC_Stop();
 316   1              return  Error;
 317   1      }
 318          
 319          BIT     IIC_ReadW(BYTE  Addr,WORD       SubAddr,BYTE  Number)
 320          {
 321   1              BIT             DATA    Error=0;
 322   1              BYTE    DATA    loop;
 323   1              IIC_Start();
 324   1              if      (IIC_SendByte(Addr))
 325   1              Error=btIIC_ERROR;      
 326   1              if      (IIC_SendByte(Hi_Byte(SubAddr)))
 327   1              Error=btIIC_ERROR;      
 328   1              if      (IIC_SendByte(Lo_Byte(SubAddr)))
 329   1              Error=btIIC_ERROR;      
 330   1              IIC_Start();
 331   1              if      (IIC_SendByte(Addr+1))
 332   1              Error=btIIC_ERROR;      
 333   1              for     (loop=0;loop<Number;loop++)
 334   1              {
 335   2                      IIC_ReceiveByte(ptGpBuffer++);
 336   2                      IIC_Ack(loop/(Number-1));
 337   2              }
 338   1              IIC_Stop();
 339   1              return  Error;
 340   1      }
 341          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1040    ----
   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 + -