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

📄 i2c.lst

📁 T112 MCU源程码,用于T112外接MCU篇程,用来驱动模拟屏
💻 LST
字号:
C51 COMPILER V7.06   I2C                                                                   12/09/2006 19:37:50 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\I2C.c BROWSE INCDIR(Z:\cb\TV_112\include\) DEBUG OBJECTEXTEND PRINT(
                    -.\I2C.lst) OBJECT(I2C.obj)

stmt level    source

   1          #include "reg51.h"
   2          #include "common.h"
   3          #include "struct.h"
   4          #include "system.h"
   5          #include "twowire.h"
   6          
   7          #define True 1
   8          #define False 0
   9          #define High  1
  10          #define Low   0
  11          //#define nop _nop()_
  12          
  13          /*********************************************************************************************************
             -****************************************
  14                                                                                  I2C总线驱动程序
  15          **********************************************************************************************************
             -****************************************/
  16          
  17          
  18          
  19                  void    Delay_10us(void)
  20                  {
  21   1                              twdDelay(5);                    
  22   1              
  23   1              }
  24                  
  25                  /*************************************************/
  26          
  27                  void    Start_I2C(void)
  28                  {                                                                               
  29   1              P_SCK   =       False   ;
  30   1                      Delay_10us()                    ;
  31   1                      P_SDA   =       True    ;
  32   1                      Delay_10us()                    ;
  33   1                      P_SCK   =       True    ;
  34   1                      Delay_10us()                    ;
  35   1                      P_SDA   =       False   ;                               
  36   1                      Delay_10us()                    ;
  37   1                      P_SCK   =       False   ;
  38   1              }
  39          
  40                  /***********************************************/
  41          
  42                  void    Stop_I2C(void)
  43                  {       
  44   1                                                                                              
  45   1                      P_SCK   =       False;
  46   1                      Delay_10us();
  47   1                      P_SDA   =       False;
  48   1                      Delay_10us();
  49   1                      P_SCK   =       True;
  50   1                      Delay_10us();
  51   1                      P_SDA   =       True;                           
  52   1                      Delay_10us();
C51 COMPILER V7.06   I2C                                                                   12/09/2006 19:37:50 PAGE 2   

  53   1                      P_SCK   =       False;
  54   1              }
  55          
  56                  /***********************************************/
  57          
  58                  void WByte_I2C(uCHAR  value)
  59                  {
  60   1                      uCHAR   i;
  61   1                      for(i=0;i!=8;i++)
  62   1                      {
  63   2                              if( value&0x80 )
  64   2                              {
  65   3                                      P_SDA   = True;
  66   3                              }
  67   2                              else
  68   2                              {
  69   3                                      P_SDA   = False;
  70   3                              }
  71   2                              value   <<=1;
  72   2                              Delay_10us();
  73   2                              P_SCK   =       True;
  74   2                              Delay_10us();
  75   2                              P_SCK   =       False;
  76   2                              Delay_10us();
  77   2                      }
  78   1                      P_SDA   =       True;   
  79   1                      P_SCK   =       True;
  80   1                      do
  81   1                      {
  82   2                              i++;
  83   2                      }while(P_SDA&&i!=255);
  84   1                      P_SCK   =       False;
  85   1              }
  86                  
  87                  /**************************************************/
  88                  
  89                  uCHAR I2C_RByte(void)
  90                  {
  91   1                      uCHAR i;
  92   1                      uCHAR RI2C_data=0;
  93   1      
  94   1                      P_SDA   =       High;   
  95   1                      for(i=0;i!=8;i++)
  96   1                      {
  97   2                              P_SCK   =       High;
  98   2                              Delay_10us();
  99   2                              RI2C_data<<=1;
 100   2                              if(P_SDA)
 101   2                              {
 102   3                                      RI2C_data ++;
 103   3                              }
 104   2                              P_SCK   =       Low;
 105   2                              Delay_10us();
 106   2                      }
 107   1                      P_SDA   =       High;
 108   1                      Delay_10us();
 109   1                      P_SCK   =       High;
 110   1                      Delay_10us();
 111   1                      P_SCK   =       Low;
 112   1                      return RI2C_data;
 113   1              }
 114          /*******************************************/
C51 COMPILER V7.06   I2C                                                                   12/09/2006 19:37:50 PAGE 3   

 115          
 116          void  W_E2PROM(uCHAR slave_addr,uCHAR W_addr ,uCHAR W_data)
 117                  {
 118   1                      Start_I2C();
 119   1                      WByte_I2C(slave_addr);
 120   1                      WByte_I2C(W_addr);
 121   1                      WByte_I2C(W_data);
 122   1                      Delay_10us();
 123   1                      ///Wait_64us();
 124   1                      Stop_I2C();
 125   1              }
 126          
 127          /*************************************************/
 128          uCHAR R_E2PROM(uCHAR slave_addr,uCHAR R_addr)
 129          {
 130   1                      uCHAR i;
 131   1                      Start_I2C();
 132   1                      WByte_I2C(slave_addr);
 133   1                      WByte_I2C(R_addr);
 134   1                      Start_I2C();
 135   1                      WByte_I2C(slave_addr|0x01);
 136   1                      i=I2C_RByte();
 137   1                      Stop_I2C();
 138   1                      return i;
 139   1      }


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