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

📄 i2c.lst

📁 车载DVD osdIC TW8816原厂代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 207          void WriteI2Cn_(BYTE addr, BYTE *val, BYTE cnt)
 208          {
 209   1              BYTE i;
 210   1      
 211   1      #ifdef INTERNAL_MCU
 212   1              BYTE    index;
 213   1              index = *val;
 214   1              val++;
 215   1              if ( addr == TW88I2CAddress ) {
 216   2                      for ( i=1; i<cnt; i++)
 217   2                              WriteTW88(index++, *val++);
 218   2                      return;
 219   2              }
 220   1      #endif
 221   1              I2CStart();
 222   1              I2CWriteData(addr);
 223   1      
 224   1              for(i=0; i<cnt; i++){
 225   2                      I2CWriteData(*(val+i));         //LJY050101
 226   2              }
 227   1              I2CStop();
 228   1      }
 229          
 230          // Hans
 231          #ifdef SUPPORT_TV
 232          void WriteI2Cn_ExternalDev(BYTE addr, BYTE index, BYTE *val, BYTE cnt)
 233          {
 234   1              BYTE i;
 235   1      
 236   1              I2CStart();
 237   1              I2CWriteData(addr);
 238   1              I2CWriteData(index);
 239   1      
 240   1              for(i=0; i<cnt; i++){
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 5   

 241   2                      I2CWriteData(*(val+i));         //LJY050101
 242   2              }
 243   1              I2CStop();
 244   1      }
 245          #endif
 246          
 247          //BYTE I2CWriteData_Wait(BYTE value);
 248          
 249          #ifdef SUPPORT_MSP_AUDIO
              void I2CReadByteMSP(BYTE addr, BYTE index, BYTE *pd, BYTE cnt)
              {
                      BYTE i;
              
                      I2CStart();
                      I2CWriteData_Wait(addr);
                      I2CWriteData(index);
                      for(i=0; i<cnt; i++) {
                              I2CWriteData(*(pd+i));
                      }
                      I2CStart();
                      I2CWriteData_Wait(addr | 0x01);
                      *pd = I2CReadDataWithACK();
                      *(pd+1) = I2CReadData();
              
                      I2CStop();
              }
              #endif
 268          
 269          
 270          
 271          /*****************************************************************************/
 272          /*                                                                           */
 273          /*****************************************************************************/
 274          #ifdef SUPPORT_MSP_AUDIO
              BYTE I2CWriteData_Wait(BYTE value)
              {
                      WORD i;
                      BYTE ack;
              
                      for(i=0; i<8; i++, value<<=1) {
                              if(value & 0x80) I2C_SDA = 1;
                              else                     I2C_SDA = 0;
                              I2Cdelay();
                              I2C_SCL = 1;    I2Cdelay();
                              I2C_SCL = 0;
                      }
                      I2C_SDA = 1;    I2Cdelay();
                      I2C_SCL = 1;    I2Cdelay();
                      i=0;
                  while(1) {
                              if( I2C_SCL ) break;
                              i++;
                      }
              
                      ack = I2C_SDA;  //I2Cdelay();
                      I2C_SCL = 0;
                      return (1-ack);
              }
              #endif
 300          
 301          #ifndef QVGA
 302          void dd(void)
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 6   

 303          {
 304   1      }
 305          #else
              #define dd()  I2Cdelay()
              #endif
 308          
 309          void I2CStart()
 310          {
 311   1              I2C_SDA = 1;    dd();
 312   1              I2C_SCL = 1;    dd();
 313   1              I2C_SDA = 0;    dd();
 314   1              I2C_SCL = 0;
 315   1      }
 316          
 317          void I2CStop()
 318          {
 319   1              I2C_SDA = 0;    dd();
 320   1              I2C_SCL = 1;    dd();
 321   1              I2C_SDA = 1;
 322   1      }
 323          
 324          void I2CWriteData(BYTE value)
 325          {
 326   1      /*
 327   1              int i;
 328   1      
 329   1              for(i=0; i<8; i++, value<<=1) {
 330   1                      I2C_SCL = 0;
 331   1                      I2Cdelay();     // HHY 2.04 in special case, it was unstable
 332   1                      if(value & 0x80) I2C_SDA = 1;
 333   1                      else                     I2C_SDA = 0;
 334   1                      I2Cdelay();
 335   1                      I2C_SCL = 1;
 336   1              }
 337   1      */
 338   1      
 339   1              I2C_SCL=0;      I2C_SDA=(value & 0x80)? 1:0;    I2C_SCL=1;      dd();
 340   1              I2C_SCL=0;      I2C_SDA=(value & 0x40)? 1:0;    I2C_SCL=1;      dd();
 341   1              I2C_SCL=0;      I2C_SDA=(value & 0x20)? 1:0;    I2C_SCL=1;      dd();
 342   1              I2C_SCL=0;      I2C_SDA=(value & 0x10)? 1:0;    I2C_SCL=1;      dd();
 343   1      
 344   1              I2C_SCL=0;      I2C_SDA=(value & 0x08)? 1:0;    I2C_SCL=1;      dd();
 345   1              I2C_SCL=0;      I2C_SDA=(value & 0x04)? 1:0;    I2C_SCL=1;      dd();
 346   1              I2C_SCL=0;      I2C_SDA=(value & 0x02)? 1:0;    I2C_SCL=1;      dd();
 347   1              I2C_SCL=0;      I2C_SDA=(value & 0x01)? 1:0;    I2C_SCL=1;      dd();
 348   1      
 349   1      
 350   1              I2C_SCL = 0;    // HHY 3.00
 351   1              I2C_SCL = 0;    // HHY 3.00
 352   1              I2C_SCL = 0;    //      I2Cdelay();
 353   1              I2C_SDA = 1;    //      I2Cdelay();
 354   1      
 355   1              I2C_SCL = 1;    // HHY 3.00
 356   1              I2C_SCL = 1;    // HHY 3.00
 357   1              I2C_SCL = 1;    //      I2Cdelay();
 358   1              I2C_SCL = 0;
 359   1      }
 360          
 361          BYTE I2CReadData()
 362          {
 363   1              int i;
 364   1              BYTE value=0;
C51 COMPILER V7.50   I2C                                                                   04/01/2008 15:02:09 PAGE 7   

 365   1      
 366   1              I2C_SDA = 1;    dd();
 367   1              I2C_SCL = 0;
 368   1              
 369   1              for(i=0; i<8; i++) {
 370   2                      I2C_SCL = 1;
 371   2                      value <<= 1;
 372   2                      if(I2C_SDA) value |= 1;
 373   2                      I2C_SCL = 0;
 374   2              }
 375   1              dd();
 376   1              
 377   1              I2C_SCL = 1;    // HHY 3.00
 378   1              I2C_SCL = 1;    // HHY 3.00
 379   1              I2C_SCL = 1;
 380   1              I2C_SCL = 0;
 381   1      
 382   1              return value;
 383   1      
 384   1      }
 385          
 386          #ifdef SUPPORT_MSP_AUDIO
              BYTE I2CReadDataWithACK()
              {
                      int i;
                      BYTE value=0;
              
                      I2C_SDA = 1;    I2Cdelay();
                      I2C_SCL = 0;
              
                      for(i=0; i<8; i++) {
                              I2C_SCL = 1;
                              value <<= 1;
                              if(I2C_SDA) value |= 1;
                              I2C_SCL = 0;
                      }
                      I2C_SDA = 0;    I2Cdelay();             //ack
                      I2C_SCL = 1;    I2Cdelay();
                      I2C_SCL = 0;
              
                      return value;
              }
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    880    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----      36
   DATA SIZE        =   ----    ----
   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 + -