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

📄 i2c.lst

📁 W3100是WIZnet公司专门为以太网互联和嵌入式设备推出的硬件TCP/IP协议栈芯片
💻 LST
字号:
C51 COMPILER V8.02   I2C                                                                   10/17/2006 16:52:42 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE I2C.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          ###############################################################################
   3          Wiznet.
   4          5F Simmtech Bldg., 228-3, Nonhyun-dong, Kangnam-gu,
   5          Seoul, Korea
   6          
   7          (c) Copyright 2002, Wiznet, Seoul, Korea
   8          
   9          File Name : I2C.C
  10          
  11          Version : 1.0
  12          
  13          Created : 2002/01/29
  14          
  15          Description : I2C Interface definition
  16                       It's implemented using 8051MCU Port 1 and defined with SDA(P1.3) and SCL(P1.4)
  17                       Function Delay() depends on the performance of MCU.
  18            
  19          Modified History 
  20                          Modified : 2002/04/13             
  21          
  22          
  23          ###############################################################################
  24          */
  25          
  26          
  27          /*
  28          ###############################################################################
  29          Include Part
  30          ###############################################################################
  31          */
  32          #include <reg51.h>
  33          #include "i2c.h"
  34          
  35          
  36          /*
  37          ###############################################################################
  38          Function Implementation Part
  39          ###############################################################################
  40          */
  41          
  42          /*
  43          Description  :  START Bit-Pattern Generate
  44                          ----|________   SDA
  45                          -------|_____ SCL 
  46          Argument     :  
  47          Return Value :  
  48          Note         :  
  49          */
  50          void GEN_START()
  51          {
  52   1              P1 |= SDA_H;Delay(1);   //SDA HIGH
  53   1              P1 |= SCL_H;Delay(1);   //SCL HIGH
  54   1              P1 &= SDA_L;Delay(1);   //SDA LOW
  55   1              P1 &= SCL_L;Delay(1);   //SCL LOW
C51 COMPILER V8.02   I2C                                                                   10/17/2006 16:52:42 PAGE 2   

  56   1      }
  57          
  58          /*
  59          Description  :  END Bit-Pattern Generate
  60                          ______|-----    SDA
  61                          ___|-------- SCL 
  62          Argument     :  
  63          Return Value :  
  64          Note         :  
  65          */
  66          void GEN_STOP()
  67          {
  68   1              P1 &= SCL_L;Delay(1);   // SCL LOW
  69   1              P1 &= SDA_L;Delay(1);   // SDA LOW
  70   1              P1 |= SCL_H;Delay(1);   // SCL HIGH;
  71   1              P1 |= SDA_H;Delay(1);   // SDA HIGH;
  72   1      }
  73          
  74          
  75          /*
  76          Description  :  Send ACK or NACK Signal
  77          Argument     :  ack - ACK or NACK (INPUT)
  78          Return Value :  
  79          Note         :  It's sent ACK and NACK by MCU.
  80          */
  81          void SEND_ACK(char ack)
  82          {
  83   1              P1 &= SCL_L;Delay(1);                                   // Send ACK(LOW) or NACK(HIGH) and Generate SCL clock.
  84   1              if(ack == ACK)                                          // If ACK?
  85   1                      P1 &= SDA_L;
  86   1              else                                                    // If NACK?
  87   1                      P1 |= SDA_H;
  88   1              Delay(2);
  89   1              P1 |= SCL_H;Delay(1);                                   // SCL Clock
  90   1              P1 &= SCL_L;Delay(1);
  91   1      }
  92          
  93          /*
  94          Description  :  Wait ACK or NACK Siganl
  95          Argument     :  
  96          Return Value :  ACK or NACK
  97          Note         :  It's sent ACK or NACK by Device interfaced using i2C with MCU.That is, MCU wait for ACK or
             - NACK signal.
  98          */
  99          char WAIT_ACK()
 100          {
 101   1              char ack;                                               // Wait for ACK or NACK
 102   1              P1 &= SCL_L;Delay(1);
 103   1              P1 |= SCL_H;Delay(1);
 104   1              if(P1 & SDA_H)                                          // If Signal is HIGH,then NACK, else if LOW,then ACK
 105   1                      ack = NACK;
 106   1              else
 107   1                      ack = ACK;
 108   1              P1 &= SCL_L;Delay(1);
 109   1              return ack;
 110   1      }
 111          
 112          
 113          
 114          /*
 115          Description  :  Write Byte via I2C
 116          Argument     :  b - To be writted a byte value
C51 COMPILER V8.02   I2C                                                                   10/17/2006 16:52:42 PAGE 3   

 117          Return Value :  
 118          Note         :  
 119          */
 120          void WriteByte(char b)
 121          {
 122   1              char i =0;
 123   1              for( ; i < 8  ; i++)                                    // Send data by SCL from MSB to LSB by SDA on I2C BUS.
 124   1              {
 125   2                      P1 &= SCL_L;Delay(1);                           //SCL LOW
 126   2      
 127   2                      /* Read by shift each 1 Bit from MSB in Data 'b'. */
 128   2                      if( ((b << i) & 0x80) )                         // If '1'-> 'High' to SDA
 129   2                              P1 |= SDA_H;
 130   2                      else                                            // If '0'-> 'Low' to SDA
 131   2                              P1 &= SDA_L;    
 132   2                      Delay(1);
 133   2                      P1 |= SCL_H;Delay(1);                           //SCL HIGH
 134   2              }
 135   1              P1 &= SCL_L;Delay(1);                                   // SCL LOW
 136   1      }
 137          
 138          
 139          /*
 140          Description  :  Read a Byte via I2C, Read data by SCL from MSB to LSB by SDA on I2C BUS..
 141          Argument     :  
 142          Return Value :  Read Byte Value
 143          Note         :  
 144          */
 145          char ReadByte()
 146          {
 147   1              char ret;
 148   1              char i = 0;
 149   1              ret = 0;
 150   1              P1 &= SCL_L;Delay(1);                                   // SCL LOW
 151   1              for(; i<8 ; i++)
 152   1              {
 153   2                      P1 |= SCL_H;Delay(1);                           // SCL HIGH
 154   2                      ret = (ret << 1);
 155   2                      if(P1 & SDA_H)  ret++;
 156   2                      P1 &= SCL_L;Delay(1);                           // SCL LOW
 157   2              }
 158   1              return ret;
 159   1      }
 160          
 161          /*
 162          Description  :  Delay Function 
 163          Argument     :  i - about i*1ms Delay At 24MHz (INPUT)
 164          Return Value :  Read Byte Value
 165          Note         :  Delay is not from exact measuring but arbitrarily value.This value depends on system.
 166          */
 167          void Delay(int i)
 168          {
 169   1              int j;
 170   1              for(; i != 0 ; i--)
 171   1                      for( j = 0;j < 512;j++);
 172   1      }
 173          
 174          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    277    ----
C51 COMPILER V8.02   I2C                                                                   10/17/2006 16:52:42 PAGE 4   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   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 + -