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

📄 i2c.lst

📁 MXIC旺宏液晶电视芯片MX88V44的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02b   I2C                                                                  05/24/2006 17:59:20 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN .\I2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\source\I2C.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\I2C.lst) OBJECT(.\I
                    -2C.obj)

stmt level    source

   1          /*-------------------------------------------------------------------------
   2          I2C.C
   3          (I2C+I2L)
   4          Copyright 2004 Macronix International Co., Ltd.
   5          -------------------------------------------------------------------------*/
   6          #define _I2C_
   7          
   8          #include "..\inc\public2.h"
   9          
  10          #define I2C_ACK         0
  11          #define I2C_NACK        1
  12          //-------------------------------------------------------------------
  13          //      I2C_ReleaseBus(void)
  14          //-------------------------------------------------------------------
  15          void I2C_ReleaseBus(void)
  16          {
  17   1              I2C_SCL = 1;
  18   1              I2C_SDA = 1;
  19   1      }
  20          //-------------------------------------------------------------------
  21          //      I2C_SendStart(void)
  22          //-------------------------------------------------------------------
  23          void I2C_SendStart(void)
  24          {
  25   1              I2C_SDA = 1;
  26   1              I2C_SCL = 1;
  27   1              DELAY(2);
  28   1              I2C_SDA = 0;
  29   1              DELAY(2);
  30   1              I2C_SCL = 0;
  31   1      }
  32          
  33          //-------------------------------------------------------------------
  34          //      I2C_SendStop(void)
  35          //-------------------------------------------------------------------
  36          void I2C_SendStop(void)
  37          {
  38   1              I2C_SDA = 0;
  39   1              I2C_SCL = 1;
  40   1              DELAY(2);
  41   1              I2C_SDA = 1;
  42   1              DELAY(2);
  43   1              I2C_SCL = 1;
  44   1      }
  45          
  46          //-------------------------------------------------------------------
  47          //      I2C_GetACK(void)
  48          //-------------------------------------------------------------------
  49          bit I2C_GetACK(void)
  50          {
  51   1          bit value;
  52   1              I2C_SDA = 1;
  53   1              I2C_SCL = 1;
  54   1              DELAY(5);
C51 COMPILER V7.02b   I2C                                                                  05/24/2006 17:59:20 PAGE 2   

  55   1          value = I2C_SDA;
  56   1              I2C_SCL = 0;
  57   1                      DELAY(2);
  58   1      
  59   1          return (!value);
  60   1      }
  61          
  62          // if success return 1, fail return 0
  63          //-------------------------------------------------------------------
  64          //      I2C_SendByte(BYTE val)
  65          //-------------------------------------------------------------------
  66          bit I2C_SendByte(BYTE val)
  67          {
  68   1              BYTE i;
  69   1      
  70   1          for (i=0; i<8; i++)
  71   1          {
  72   2              if (val & 0x80) I2C_SDA = 1;
  73   2              else                    I2C_SDA = 0;
  74   2      
  75   2                      I2C_SCL = 1;
  76   2                  DELAY(2);
  77   2                      I2C_SCL = 0;
  78   2                  DELAY(2);
  79   2      
  80   2                      val <<= 1;
  81   2          }
  82   1      
  83   1          return(I2C_GetACK());
  84   1      }
  85          
  86          //-------------------------------------------------------------------
  87          //      I2C_GetByte(bit ACK_NACK)
  88          //                      ACK  ->I2C_SDA = 0
  89          //                      NACK ->I2C_SDA = 1
  90          //-------------------------------------------------------------------
  91          BYTE I2C_GetByte(bit ACK_NACK)
  92          {
  93   1          BYTE i;
  94   1          BYTE temp;
  95   1      
  96   1          temp = 0;
  97   1      
  98   1          for(i=0; i<8; i++)
  99   1          {
 100   2              temp <<= 1;
 101   2                      I2C_SCL = 1;
 102   2                  DELAY(2);
 103   2                      temp |= I2C_SDA;
 104   2                      I2C_SCL = 0;
 105   2                  DELAY(2);
 106   2          }
 107   1      
 108   1              I2C_SDA = ACK_NACK;
 109   1              I2C_SCL = 1;
 110   1              DELAY(2);
 111   1              I2C_SCL = 0;
 112   1              I2C_SDA = 1;
 113   1              DELAY(2);
 114   1          return(temp);
 115   1      }
 116          
C51 COMPILER V7.02b   I2C                                                                  05/24/2006 17:59:20 PAGE 3   

 117          //-------------------------------------------------------------------
 118          //      I2C_SendByteWithStart(BYTE val)
 119          //-------------------------------------------------------------------
 120          bit I2C_SendByteWithStart(BYTE val)
 121          {
 122   1          bit retVal;
 123   1      
 124   1          I2C_SendStart();
 125   1          retVal = I2C_SendByte(val);
 126   1          //delay(1);       // delay 1ms
 127   1          return(retVal);
 128   1      }
 129          
 130          //-------------------------------------------------------------------
 131          //Description:  DELAY(int)
 132          //-------------------------------------------------------------------
 133          void DELAY(unsigned int value)
 134          {
 135   1              while(value>0)
 136   1                      value--;
 137   1      }
 138          
 139          /**--------------------------------------------------------------------------
 140          * Name          void    I2L_Write(BYTE addr, BYTE i2ldata);
 141          *
 142          * Description   I2L write a byte data to 15xx
 143          *
 144          * Flow Chart
 145          *
 146          * Return        None
 147          *
 148          * DATE          Author          Description
 149          * ===========================================================================
 150          * 2004-07-09    K.M. Ho         This is first time implement
 151          **/
 152          /*
 153          void    I2L_Write(BYTE addr, BYTE i2ldata)
 154          {
 155                  BYTE    i;
 156          
 157                  I2L_SCS = 1;                                    //Init
 158                  I2L_SCL = 1;
 159                  I2L_SDQ = 1;
 160          
 161                  I2L_SCS = 0;                                    //Serial Interface Chip Select
 162          
 163                  I2L_SDQ = 0;                                    //Write command
 164          
 165              I2L_SCL = 0;
 166              DELAY(2);
 167              I2L_SCL = 1;                                        //rising edge latch data
 168          
 169                  for (i=0; i<8; i++)                             //move out 8 bit addr to 15xx
 170                  {
 171                          I2L_SDQ = addr & 0x01;          //move out the LSB
 172                  I2L_SCL = 0;
 173                  addr >>= 1;                                     //shift bit to LSB
 174                  I2L_SCL = 1;
 175                  }
 176          
 177                  for (i=0; i<8; i++)                             //move out 8 bit data to 15xx
 178                  {

⌨️ 快捷键说明

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