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

📄 twowire.lst

📁 TFT LCD驱动芯片T100A+AU7" Source code
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TWOWIRE
OBJECT MODULE PLACED IN F:\T100_C~1\HUI_CH~1\铁将军\SIMULA~2\TWOWIRE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\T100_C~1\HUI_CH~1\铁将军\SIMULA~2\TWOWIRE.C DB SB OE

stmt level    source

   1          //---------------------------------------------------------------------------
   2          // Terawins Inc. Company Confidential Strictly Private
   3          //
   4          // $Archive: $
   5          // $Revision: 1.9 $
   6          // $Author: jwang $
   7          // $Date: 2002/07/08 22:34:39 $
   8          //
   9          // --------------------------------------------------------------------------
  10          // >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  11          // --------------------------------------------------------------------------
  12          // Copyright 2002 (c) Terawins Inc.
  13          // --------------------------------------------------------------------------
  14          
  15          #include "reg51.h"
  16          #include <intrins.h>
  17          #include "common.h"
  18          #include "System.h"
  19          #include "TW101Reg.h"
  20          #include "TwoWire.h"
  21          #include "Tuner.h"
  22          #define TW_SLOW_SPEED
  23          //----------------------------------------
  24          // S_Condition for TWD protocol
  25          //----------------------------------------
  26          #if defined(TW_SLOW_SPEED)
  27          void StartCondition(void)
  28          {
  29   1          uCHAR ix;
  30   1          uCHAR cTWtrytime=0;
  31   1          EA=0;
  32   1          while(++cTWtrytime)
  33   1          {
  34   2              Set_SDA_High;
  35   2              Set_SCL_High;        /* make sure two line is release */
  36   2              for(ix = 0; ix < TWD_LONG_TIME; ix++)
  37   2              { };  /* Delay 12us */
  38   2      
  39   2              Set_SDA_Low;
  40   2              for(ix = 0; ix < TWD_LONG_TIME; ix++)
  41   2              { };  /* Delay 12us */
  42   2      
  43   2              if((SCL_High)&&(SDA_Low))
  44   2                  break;
  45   2          }
  46   1      
  47   1          for(ix = 0; ix < TWD_SHORT_TIME; ix++)
  48   1          { };  /* Delay 12us */
  49   1      }
  50          
  51          //----------------------------------------
  52          // P_Condition for TWD protocol
  53          //----------------------------------------
  54          void StopCondition(void)
  55          {
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 2   

  56   1          uCHAR ix;
  57   1          uCHAR cTWtrytime=0;
  58   1      
  59   1          Set_SDA_Low;
  60   1          Set_SCL_High;
  61   1          for(ix = 0; ix < TWD_SHORT_TIME; ix++)
  62   1          { };  /* delay 12us */
  63   1      
  64   1          while(SCL_Low && ++cTWtrytime)
  65   1          { };
  66   1      
  67   1          for(ix = 0; ix < TWD_SHORT_TIME; ix++)
  68   1          { };  /* delay 12us */
  69   1      
  70   1          Set_SDA_High;
  71   1          for(ix = 0; ix < TWD_SHORT_TIME; ix++)
  72   1          { };  /* delay 12us */
  73   1              EA=1;
  74   1      }
  75          
  76          //--------------------------------------------------
  77          // Send_Byte
  78          //    Send a byte to master with a acknowledge bit
  79          //--------------------------------------------------
  80          uCHAR Send_Byte(uCHAR cData)
  81          {
  82   1          uCHAR ix, j, cAcknowledge;
  83   1          uCHAR cTWtrytime=0;
  84   1      
  85   1          cAcknowledge = 0;
  86   1      
  87   1          for(ix = 0; ix < 8; ix++)
  88   1          {
  89   2              Set_SCL_Low;
  90   2              for(j = 0; j < TWD_SHORT_TIME; j++)
  91   2              { };
  92   2      
  93   2              if(cData&0x80)Set_SDA_High;
  94   2                      else Set_SDA_Low;
  95   2                      cData<<=1;
  96   2      
  97   2              for(j = 0; j < TWD_SHORT_TIME; j++)
  98   2              { };
  99   2      
 100   2              Set_SCL_High;
 101   2              while(SCL_Low && ++cTWtrytime)
 102   2              { };
 103   2      
 104   2              for(j = 0; j < TWD_SHORT_TIME; j++)
 105   2              { };
 106   2          }
 107   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 108   1          { };
 109   1      
 110   1          Set_SCL_Low;
 111   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 112   1          { };
 113   1      
 114   1          Set_SDA_High;                /* release data line for acknowledge */
 115   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 116   1          { };
 117   1      
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 3   

 118   1          Set_SCL_High;                /* Send a clock for Acknowledge */
 119   1          while(SCL_Low)
 120   1          { };
 121   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 122   1          { };
 123   1      
 124   1          if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
 125   1          Set_SCL_Low;                   /* Finish Acknoledge */
 126   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 127   1          { };
 128   1      
 129   1          return(cAcknowledge);
 130   1      }
 131          
 132          //--------------------------------------------------
 133          // Read_Byte
 134          //    Read a byte from master with a acknowledge bit
 135          //--------------------------------------------------
 136          uCHAR Read_Byte(uCHAR cNum)
 137          {
 138   1          uCHAR ix, j;
 139   1          uCHAR cRetval=0;
 140   1      
 141   1          for(ix=0;ix<8;ix++){
 142   2                Set_SCL_High;
 143   2                while(SCL_Low){};
 144   2                for(j=0;j<TWD_SHORT_TIME;j++){};
 145   2                cRetval = (SDA_High)? (cRetval|(1<<(7-ix))):cRetval ;  /* MSB First */
 146   2                Set_SCL_Low;
 147   2           }
 148   1      
 149   1           if(cNum==1)
 150   1              Set_SDA_High;
 151   1           else
 152   1                      Set_SDA_Low;
 153   1           //SDA = (cNum==1) 1:0;
 154   1           Set_SCL_High;
 155   1           while(SCL_Low){};
 156   1           for(j = 0; j < TWD_SHORT_TIME; j++)
 157   1           { };
 158   1      
 159   1          Set_SCL_Low;
 160   1      
 161   1          Set_SDA_High;
 162   1          for(j = 0; j < TWD_SHORT_TIME; j++)
 163   1          { };
 164   1      
 165   1          return cRetval;
 166   1      }
 167          
 168          #else
              // for fast Two Wire Bus Speed
              
              void StartCondition(void)
              {
              //    uCHAR ix;
                  uCHAR cTWtrytime=0;
              
                  while(++cTWtrytime)
                  {
                      Set_SDA_High;
                      Set_SCL_High;        /* make sure two line is release */
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 4   

              
                      Set_SDA_Low;
              
                      if((SCL_High)&&(SDA_Low))
                          break;
                  }
              }
              
              //----------------------------------------
              // P_Condition for TWD protocol
              //----------------------------------------
              void StopCondition(void)
              {
              //    uCHAR ix;
                  uCHAR cTWtrytime=0;
              
                  Set_SDA_Low;
                  Set_SCL_High;
              
                  Set_SDA_High;
              }
              
              //--------------------------------------------------
              // Send_Byte
              //    Send a byte to master with a acknowledge bit
              //--------------------------------------------------
              uCHAR Send_Byte(uCHAR cData)
              {
                  uCHAR ix;
                  uCHAR cAcknowledge;
                  uCHAR cTWtrytime=0;
              
                  cAcknowledge = 0;
              
                  for(ix = 0; ix < 8; ix++)
                  {
                      Set_SCL_Low;
                      //        (cData&(1<<(7-ix)))?(Set_SDA_High):(Set_SDA_Low);  /* MSB First */
                      if(cData&0x80)Set_SDA_High;
                              else Set_SDA_Low;
                              cData<<=1;
              
              
                      Set_SCL_High;
                  }
              
                  Set_SCL_Low;
                  Set_SDA_High;                /* release data line for acknowledge */
                  Set_SCL_High;                /* Send a clock for Acknowledge */
              
                  if(SDA_High) cAcknowledge = 1; /* No Acknowledge */
                  Set_SCL_Low;                   /* Finish Acknoledge */
              
                  return(cAcknowledge);
              }
              
              //--------------------------------------------------
              // Read_Byte
              //    Read a byte from master with a acknowledge bit
              //--------------------------------------------------
              uCHAR Read_Byte(void)
              {
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 5   

                  uCHAR ix, j;
                  uCHAR cRetval;
                  uCHAR cTWtrytime=0;
              
              //    cRetval = 0;
                  Set_SDA_High;
              
                  for(ix = 0; ix < 8; ix++)
                  {
                      Set_SCL_Low;
                      for(j = 0; j < TWD_SHORT_TIME; j++)
                      { };
              
                      Set_SCL_High;
                      while(SCL_Low)
                      { };
              
                      for(j = 0; j < TWD_SHORT_TIME; j++)
                      { };
              
                              cRetval<<=1;
                              if(SDA_High) cRetval++;
                      }
              
                  for(j = 0; j < TWD_SHORT_TIME; j++)
                  { };
              
                  Set_SCL_Low;
                  for(j = 0; j < TWD_SHORT_TIME; j++)
                  { };
              
                  return cRetval;
              }
              
              
              #endif
 278          
 279          //--------------------------------------------------
 280          // Write Byte to Device
 281          //--------------------------------------------------
 282          
 283          //--------------------------------------------------
 284          // Read Byte to Device
 285          //--------------------------------------------------
 286          uCHAR I2CReadByte(uCHAR cDevAddr, uCHAR cReg)
 287          {
 288   1          uCHAR cResult = 0;
 289   1      
 290   1      
 291   1          /* write reg offset */
 292   1          StartCondition();
 293   1          if(Send_Byte(cDevAddr))
 294   1              return 0;  // Write address
 295   1          if(Send_Byte(cReg))
 296   1              return 0;
 297   1      
 298   1          /* read data */
 299   1          StartCondition();
 300   1          if (Send_Byte(cDevAddr | 0x01)) // Read address
 301   1              return 0;
 302   1          cResult = Read_Byte(1);
 303   1      
C51 COMPILER V7.06   TWOWIRE                                                               06/16/2005 10:05:38 PAGE 6   

 304   1          StopCondition();
 305   1          return cResult;
 306   1      }
 307          
 308          
 309          uCHAR I2CWriteByte(uCHAR cDevAddr, uCHAR cReg, uCHAR cData)
 310          {
 311   1      
 312   1      
 313   1          /* start condition */
 314   1          StartCondition();
 315   1        cDevAddr &= 0xFE;   // Force WRITE address
 316   1          /* send device ID and write data */
 317   1          if(!Send_Byte(cDevAddr))
 318   1          {
 319   2              if(!Send_Byte(cReg))
 320   2              {
 321   3                  if(!Send_Byte(cData))
 322   3                  {
 323   4                      StopCondition();
 324   4                      return(0);      /* success */
 325   4                  }
 326   3              }
 327   2          }

⌨️ 快捷键说明

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