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

📄 i2c.lst

📁 Bitek 公司 bit1611b模拟屏驱动芯片外接MCU驱动DEMO源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   I2C                                                                   02/05/2007 16:33:25 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN .\OBJ\I2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE I2C.C ROM(COMPACT) OPTIMIZE(9,SPEED) NOAREGS DEFINE(PROJECT=DMO04015800,MCU
                    -_CFG=BIT5101,VP_IF_CFG=VP_IF_BITEK) PRINT(.\LST\I2C.lst) OBJECT(.\OBJ\I2C.obj)

line level    source

   1          /* **********************************************************************
   2          
   3                   Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd
   4          
   5                  All rights are reserved. Reproduction in whole or in parts is
   6              prohibited without the prior written consent of the copyright owner.
   7             ----------------------------------------------------------------------
   8          
   9              Module: I2C.C
  10          
  11              Purpose: Implementation of I2C module.
  12          
  13              Version: 0.02                                   11:15AM  2005/12/09
  14          
  15              Compiler: Keil 8051 C Compiler v8.01
  16          
  17              Reference:
  18              [1] I2C Peripherals data handbook IC12, 1996 Philips Semiconductors
  19              [2] Display Driver and I2C-bus Peripherals data handbook IC12, 2000
  20                  Philips Semiconductors
  21          
  22             ----------------------------------------------------------------------
  23              Modification:
  24          
  25              R0.01 05:19PM  2004/10/25 Jeffrey Chang
  26              Reason:
  27                  1. Original.
  28              Solution:
  29          
  30             ----------------------------------------------------------------------
  31              R0.02 11:14AM  2005/12/09 Jeffrey Chang
  32              Reason:
  33                  1. Revised timing.
  34              Solution:
  35          
  36             ********************************************************************** */
  37          
  38          #define _I2C_C_
  39          
  40          
  41          /* ------------------------------------
  42              Header Files
  43             ------------------------------------ */
  44          #include <intrins.h>
  45          
  46          #include "common.h"
  47          #include "i2c.h"
  48          
  49          /* ------------------------------------
  50              Macro Definitions
  51             ------------------------------------ */
  52          
  53          #define NOP_24  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _
C51 COMPILER V7.50   I2C                                                                   02/05/2007 16:33:25 PAGE 2   

             -nop_();}
  54          #define NOP_20  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
  55          #define NOP_18  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
  56          #define NOP_15  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -; _nop_(); _nop_(); _nop_(); _nop_(); _nop_();  }
  57          #define NOP_12  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -; _nop_(); _nop_();   }
  58          #define NOP_10  { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
             -;                     }
  59          #define NOP_3   { _nop_(); _nop_(); _nop_(); }
  60          #define NOP_2   { _nop_(); _nop_(); }
  61          #define NOP_1   { _nop_(); }
  62          #define NOP_0   {  }
  63          
  64          // 6 / 14.318MHz = 419 ns !
  65          
  66          #if (I2C_MODE_CFG  == I2C_MODE_SLOW)
                  // 100 kHz
              
                  // [10]165 Standard Mode Start Set-up Time:             Tsu,sta = 4.7 us
                  // [11]72  Standard Mode Start Set-up Time:             Tsu,sta = 4.7 us
                  #define I2C_SU_STA      NOP_24
              
                  // [10]165 Standard Mode Start Hold Time:               Thd,dat = 4.0 us
                  // [11]72  Standard Mode Start Hold Time:               Thd,dat = 4.0 us
                  #define I2C_HD_STA      NOP_20
              
                  // [10]165 Standard Mode Data Set-Up Time:              Tsu,dat = 250 ns
                  // [11]72  Standard Mode Data Set-Up Time:              Tsu,dat = 250 ns
                  #define I2C_SU_DAT      NOP_2
              
                  // [10]165 Standard Mode Data Hold Time:                Thd,dat = 0 us
                  // [11]72  Standard Mode Data Hold Time:                Thd,dat = 0 us
                  #define I2C_HD_DAT      NOP_0
              
                  // [10]165 Standard Mode HIGH period of the SCL clock:  Thigh = 4.0 us
                  // [11]72  Standard Mode HIGH period of the SCL clock:  Thigh = 4.0 us
                  #define I2C_HIGH        NOP_20
              
                  // [10]165 Standard Mode LOW period of the SCL clock:   Tlow = 4.7 us
                  // [11]72  Standard Mode LOW period of the SCL clock:   Tlow = 4.7 us
                  #define I2C_LOW         NOP_24
              
                  // [10]165 Standard Mode Stop Set-up Time:              Tsu,sto = 4.0 us
                  // [11]72  Standard Mode Stop Set-up Time:              Tsu,sto = 4.0 us
                  #define I2C_SU_STO      NOP_20
              
              #elif (I2C_MODE_CFG  == I2C_MODE_STANDARD)
  98              // 100 kHz
  99          
 100              // [10]165 Standard Mode Start Set-up Time:             Tsu,sta = 4.7 us
 101              // [11]72  Standard Mode Start Set-up Time:             Tsu,sta = 4.7 us
 102              #define I2C_SU_STA      NOP_12
 103          
 104              // [10]165 Standard Mode Start Hold Time:               Thd,dat = 4.0 us
 105              // [11]72  Standard Mode Start Hold Time:               Thd,dat = 4.0 us
 106              #define I2C_HD_STA      NOP_10
 107          
 108              // [10]165 Standard Mode Data Set-Up Time:              Tsu,dat = 250 ns
 109              // [11]72  Standard Mode Data Set-Up Time:              Tsu,dat = 250 ns
C51 COMPILER V7.50   I2C                                                                   02/05/2007 16:33:25 PAGE 3   

 110              #define I2C_SU_DAT      NOP_1
 111          
 112              // [10]165 Standard Mode Data Hold Time:                Thd,dat = 0 us
 113              // [11]72  Standard Mode Data Hold Time:                Thd,dat = 0 us
 114              #define I2C_HD_DAT      NOP_0
 115          
 116              // [10]165 Standard Mode HIGH period of the SCL clock:  Thigh = 4.0 us
 117              // [11]72  Standard Mode HIGH period of the SCL clock:  Thigh = 4.0 us
 118              #define I2C_HIGH        NOP_10
 119          
 120              // [10]165 Standard Mode LOW period of the SCL clock:   Tlow = 4.7 us
 121              // [11]72  Standard Mode LOW period of the SCL clock:   Tlow = 4.7 us
 122              #define I2C_LOW         NOP_12
 123          
 124              // [10]165 Standard Mode Stop Set-up Time:              Tsu,sto = 4.0 us
 125              // [11]72  Standard Mode Stop Set-up Time:              Tsu,sto = 4.0 us
 126              #define I2C_SU_STO      NOP_10
 127          
 128          
 129          #elif (I2C_MODE_CFG  == I2C_MODE_FAST)
                  // 400 kHz
              
                  // [10]165 Fast Mode Start Set-up Time:                 Tsu,sta = 0.6 us
                  #define I2C_SU_STA      NOP_2
              
                  // [10]165 Fast Mode Start Hold Time:                   Thd,dat = 0.6 us
                  #define I2C_HD_STA      NOP_2
              
                  // [10]165 Fast Mode Data Set-Up Time:                  Tsu,dat = 100 ns
                  #define I2C_SU_DAT      NOP_1
              
                  // [10]165 Fast Mode Data Hold Time:                    Thd,dat = 0 us
                  #define I2C_HD_DAT      NOP_0
              
                  // [10]165 Fast Mode HIGH period of the SCL clock:      Thigh = 0.6 us
                  #define I2C_HIGH        NOP_2
              
                  // [10]165 Fast Mode LOW period of the SCL clock:       Tlow = 1.3 us
                  #define I2C_LOW         NOP_3
              
                  // [10]165 Fast Mode Stop Set-up Time:                  Tsu,sto = 0.6 us
                  #define I2C_SU_STO      NOP_2
              
              #elif (I2C_MODE_CFG  == I2C_MODE_HIGHSPEED)
                  // 3.4 MHz
              
                  // [10]165 Highspeed Mode Start Set-up Time:            Tsu,sta = 4.7 us
                  #define I2C_SU_STA      NOP_0
              
                  // [10]165 Highspeed Mode Start Hold Time:              Thd,dat = 4.0 us
                  #define I2C_HD_STA      NOP_0
              
                  // [10]165 Highspeed Mode Data Set-Up Time:             Tsu,dat = 250 ns
                  #define I2C_SU_DAT      NOP_0
              
                  // [10]165 Highspeed Mode Data Hold Time:               Thd,dat = 0 us
                  #define I2C_HD_DAT      NOP_0
              
                  // [10]165 Highspeed Mode HIGH period of the SCL clock: Thigh = 4.0 us
                  #define I2C_HIGH        NOP_0
              
                  // [10]165 Highspeed Mode LOW period of the SCL clock:  Tlow = 4.7 us
C51 COMPILER V7.50   I2C                                                                   02/05/2007 16:33:25 PAGE 4   

                  #define I2C_LOW         NOP_0
              
                  // [10]165 Highspeed Mode Stop Set-up Time:             Tsu,sto = 4.0 us
                  #define I2C_SU_STO      NOP_0
              
              #else
                  #error I2C.C - Invalid I2C_MODE_CFG !
              #endif // I2C_MODE_CFG
 180          
 181          
 182          #define     I2C_GET_DAT_HIGH        (   I2C_ioSDA == HIGH   )
 183          
 184          #define     I2C_SET_CLK(HiLo)       {   I2C_ioSCL = (HiLo) ? HIGH : LOW;    }
 185          #define     I2C_SET_DAT(HiLo)       {   I2C_ioSDA = (HiLo) ? HIGH : LOW;    }
 186          
 187          
 188          /* ------------------------------------
 189              Type Definitions
 190             ------------------------------------ */
 191          
 192          
 193          /* ------------------------------------
 194              Variables Definitions
 195             ------------------------------------ */
 196          sbit I2C_ioSCL  = P1 ^ 6;
 197          sbit I2C_ioSDA  = P1 ^ 7;
 198          
 199          
 200          /* ------------------------------------
 201              Function Prototypes
 202             ------------------------------------ */
 203          
 204          
 205          
 206          /* -------------------------------------------------------------------
 207              Name: I2C_GetACK -
 208              Purpose: .
 209              Passed: None.
 210              Returns: LOW if OK
 211              Notes:
 212            ------------------------------------------------------------------- */
 213          BOOL I2C_GetACK (void)
 214          {
 215   1          BOOL    fResult;
 216   1      
 217   1      
 218   1          //I2C_SET_DAT(HIGH);        // Removed by JC 01:48PM  2005/11/23
 219   1          I2C_SU_DAT;                 // Added by JC 01:51PM  2005/11/23
 220   1      
 221   1          I2C_SET_CLK(HIGH);
 222   1          I2C_HIGH;
 223   1      
 224   1          fResult = I2C_GET_DAT_HIGH;
 225   1      

⌨️ 快捷键说明

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