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

📄 i2c.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN .\Output\I2c.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE I2c.c COMPACT OPTIMIZE(9,SIZE) BROWSE MODDP2 INCDIR(.\Include\) DEFINE(INTE
                    -RNAL_MCU) DEBUG OBJECTEXTEND PRINT(.\Source\I2c.lst) OBJECT(.\Output\I2c.obj)

line level    source

   1          //-------------------------------------------------------------
   2          //      This is changed for sdcc compiler 2.2.0a        LJY000721
   3          //  ver0.11 2/20/2001   Support Z86129 Line 21 decoder.
   4          //-------------------------------------------------------------
   5          /*#include <io51.h>*/
   6          //#include <pk-51.h>    LJY000721
   7          
   8          #include "Config.h"
   9          
  10          #include "reg.h"
  11          #include "typedefs.h"
  12          #include "cpu.h"
  13          #include "I2C.h"
  14          #include "main.h"
  15          #include "printf.h"
  16          #include "osdbasic.h"
  17          #include "CPU.h"
  18          
  19          
  20          #define ID_ADDR         0xc5
  21          #define ID_DATA         0xc6
  22          
  23          extern  BYTE    DebugLevel;
  24          #ifdef  INTERNAL_MCU
  25          extern  BYTE    xdata * data regTW88;
  26          #endif
  27          
  28          
  29          /*****************************************************************************/
  30          /*                                                                           */
  31          /*****************************************************************************/
  32          
  33          #define I2C_FAST
  34          
  35          #ifdef I2C_FAST
  36           #define I2Cdelay()
  37          #else
               void I2Cdelay(void)
               {
                       BYTE i;
                       for(i=0; i<1; i++){
                       }
               }
              #endif
  45          
  46          #if (defined  QVGA) || (defined WQVGA)
  47          void I2C_delay(void)
  48          {
  49   1               BYTE i;
  50   1               for(i=0; i<255; i++){
  51   2                      i=i;
  52   2               }
  53   1               for(i=0; i<128; i++){
  54   2                      i=i;
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 2   

  55   2               }
  56   1      }
  57          #else
               #define I2C_delay() 
              #endif
  60          
  61          BYTE I2CWriteData_Wait(BYTE value);
  62          
  63          #if defined( SUPPORT_PC ) || defined( SUPPORT_DTV )
  64          void WriteADC_TW88(BYTE index, BYTE dat)
  65          {
  66   1              BYTE    page;
  67   1      
  68   1              page = ReadTW88( 0xff );                // save page
  69   1              WriteTW88( 0xff, 0x01 );                // change page1
  70   1              WriteTW88(index, dat);  
  71   1              WriteTW88( 0xff, page );                // restore page
  72   1      
  73   1      }
  74          
  75          BYTE ReadADC_TW88(BYTE index)
  76          {
  77   1              BYTE    page, val;
  78   1      
  79   1              page = ReadTW88( 0xff );                // save page
  80   1              WriteTW88( 0xff, 0x01 );                // change page1
  81   1              val = ReadTW88( index );
  82   1              WriteTW88( 0xff, page );                // restore page
  83   1              
  84   1              return val;
  85   1      }
  86          
  87          
  88          #endif  // SUPPORT_PC
  89          
  90          void WriteEEP(WORD index, BYTE dat)
  91          {
  92   1              BYTE addr;
  93   1      
  94   1              addr = (EEPROMI2CAddress | (index>>7)) & 0xfe;
  95   1      
  96   1              I2CStart();
  97   1              I2CWriteData(addr);
  98   1              I2CWriteData((BYTE)index);
  99   1              I2CWriteData(dat);
 100   1              I2CStop();
 101   1      
 102   1              #ifdef DEBUG_OSD
                              dPrintf("Write %02xh to [Adrs(%02xh)Index(%02xh)\r\n", (WORD)dat, (WORD)addr, (WORD)index );
                      #endif
 105   1      
 106   1              delay(2);
 107   1      }
 108          
 109          BYTE ReadEEP(WORD index)
 110          {
 111   1              BYTE val;
 112   1              BYTE addr;
 113   1      
 114   1              addr = (EEPROMI2CAddress | (index>>7)) & 0xfe;
 115   1      
 116   1              val = ReadI2C(addr,(BYTE)index);
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 3   

 117   1      
 118   1              #ifdef DEBUG_OSD
                              dPrintf("Read [Adrs:%02xh,Index:%02xh] %02xh\r\n", (WORD)addr, (WORD)index, (WORD)val);
                      #endif
 121   1      
 122   1              return val;
 123   1      }
 124          
 125          BYTE ReadI2C(BYTE addr, BYTE index)
 126          {
 127   1              BYTE val;
 128   1      
 129   1      #ifdef INTERNAL_MCU
 130   1              if ( addr == TW88I2CAddress ) {
 131   2                      return (ReadTW88(index));
 132   2              }
 133   1      #endif
 134   1              I2CStart();
 135   1              I2CWriteData(addr);
 136   1              I2CWriteData(index);
 137   1              I2CStart();
 138   1              I2CWriteData(addr | 0x01);
 139   1              val = I2CReadData();
 140   1              I2CStop();
 141   1      
 142   1              return val;
 143   1      }
 144          
 145          
 146          void WriteI2C(BYTE addr, BYTE index, BYTE val)
 147          {
 148   1      #ifdef INTERNAL_MCU
 149   1              if ( addr == TW88I2CAddress ) {
 150   2                      WriteTW88(index, val);
 151   2                      return;
 152   2              }
 153   1      #endif
 154   1              I2CStart();
 155   1              I2CWriteData(addr);
 156   1              I2CWriteData(index);
 157   1              I2CWriteData(val);
 158   1              I2CStop();
 159   1      }
 160          
 161          void WriteI2CnD(BYTE addr, BYTE index, BYTE val, BYTE cnt)
 162          {
 163   1              BYTE i;
 164   1      
 165   1      #ifdef INTERNAL_MCU
 166   1              if ( addr == TW88I2CAddress ) {
 167   2                      for ( i=0; i<cnt; i++)
 168   2                              WriteTW88(index, val);
 169   2                      return;
 170   2              }
 171   1      #endif          // otherwise same to below      09/18/2007
 172   1              I2CStart();
 173   1              I2CWriteData(addr);
 174   1              I2CWriteData(index);
 175   1      
 176   1              for(i=0; i<cnt; i++){
 177   2                      I2CWriteData(val);              //LJY050101
 178   2                      I2C_delay();
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 4   

 179   2              }
 180   1      
 181   1              I2CStop();
 182   1      }
 183          
 184          void WriteI2Cn(BYTE addr, BYTE index, BYTE *val, BYTE cnt)
 185          {
 186   1              BYTE i;
 187   1      
 188   1      #ifdef INTERNAL_MCU
 189   1              if ( addr == TW88I2CAddress ) {
 190   2                      for ( i=0; i<cnt; i++)
 191   2                              WriteTW88(index, *val++);
 192   2                      return;
 193   2              }
 194   1      #endif          // otherwise same to below      09/18/2007
 195   1      
 196   1              I2CStart();
 197   1              I2CWriteData(addr);
 198   1              I2CWriteData(index);
 199   1      
 200   1              for(i=0; i<cnt; i++){
 201   2                      I2CWriteData(*(val+i)); 
 202   2                      I2C_delay();
 203   2              }
 204   1              I2CStop();
 205   1      }
 206          

⌨️ 快捷键说明

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