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

📄 dviic.lst

📁 一个调整ADC gain offset 的程序
💻 LST
字号:
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DVIIC
OBJECT MODULE PLACED IN .\output\dvIIC.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\code\dvIIC.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\dvIIC.lst) OBJECT(.
                    -\output\dvIIC.obj)

line level    source

   1          
   2          #include "mtv415.h"
   3          #include "dvIIC.h"
   4          #include "extData.h"
   5          #include "intrins.h"
   6          // ---------------------------------------------------------------------------
   7          //     G L O B A L   D E F I N I T I O N S                                  
   8          // ---------------------------------------------------------------------------
   9          // ---------------------------------------------------------------------------
  10          //     L O C A L   S Y M B O L   D E C L A R A T I O N S                    
  11          // ---------------------------------------------------------------------------
  12          
  13          BOOL   g_bIICError;
  14          
  15          static BOOL   m_bNoAck;
  16          static BYTE   m_cIICTimer;
  17          
  18          #define  SendBits(cData)  MBUF = cData
  19          
  20          #define SendIICStart()          {                              \
  21                                                           IICCTR = 0x00;\
  22                                                           IICCTR = 0x01;\
  23                                      }
  24          
  25          #define  SendIICStop()       {                                \
  26                                                          IICCTR = 0x00;\
  27                                                          IICCTR = 0x02;\
  28                                                          INTFLG1 =  0x00;\
  29                                       }
  30          
  31          
  32          // ---------------------------------------------------------------------------
  33          //     L O C A L   F U N C T I O N S   P R O T O T Y P E S                  
  34          // ---------------------------------------------------------------------------
  35          
  36          static  void   IICAckWait(void);
  37          void  IICWrite(
  38                         BYTE     cDeviceAddress,
  39                         WORD             wRegisterAddress,
  40                         PBYTE           pacBuffer,
  41                         WORD            wBufferCount,
  42                         BOOL       bFlag)
  43                          
  44          {
  45   1              data WORD i;
  46   1              data BYTE cCount = 0;
  47   1              g_bIICError = FALSE;
  48   1              do
  49   1          {
  50   2                      cCount ++;
  51   2                  SendIICStop();
  52   2                  SendBits(cDeviceAddress);
  53   2                  SendIICStart();
  54   2                  IICAckWait();
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 2   

  55   2      
  56   2                 if (m_bNoAck)
  57   2                        continue;
  58   2      
  59   2                 if (bFlag)
  60   2                 {
  61   3                         SendBits((BYTE)((wRegisterAddress & 0xFF00) >> 8));
  62   3                         IICAckWait();
  63   3                         if (m_bNoAck)
  64   3                              continue;
  65   3                  }
  66   2      
  67   2        
  68   2                      SendBits((BYTE)(wRegisterAddress & 0x00FF));
  69   2                      IICAckWait();
  70   2                    if (m_bNoAck)
  71   2                    continue;
  72   2                
  73   2                 i = 0;
  74   2                
  75   2                
  76   2                       for(; i < wBufferCount; i++)
  77   2                      {
  78   3                         SendBits(pacBuffer[i]);
  79   3                         IICAckWait();
  80   3                              if (m_bNoAck)
  81   3                      break;
  82   3      
  83   3                       }
  84   2          }while (IIC_PROCESS_MAX > cCount && m_bNoAck );
  85   1          SendIICStop();
  86   1              if (m_bNoAck)
  87   1               g_bIICError = TRUE;
  88   1      }
  89          
  90          #if 0
              void    IICByteWrite(BYTE  cDeviceAddress,
                                                        BYTE          cRegisterAddress,
                                                        BYTE              cBuffer)
              {
                      data BYTE cCount = 0;
                      g_bIICError = FALSE;
                      do
                  {
                              cCount ++;
                          SendIICStop();
                          SendBits(cDeviceAddress);
                          SendIICStart();
                          IICAckWait();
              
                         if (m_bNoAck)
                                continue;
                     
                              SendBits(cRegisterAddress );
                              IICAckWait();
                            if (m_bNoAck)
                                  continue;
                        
                               SendBits(cBuffer);
                             IICAckWait();
                              if (m_bNoAck)
                                  continue;
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 3   

              
                  }while (IIC_PROCESS_MAX > cCount && m_bNoAck );
                  SendIICStop();
                  
                      if(m_bNoAck)
                       g_bIICError = TRUE;
              }
              #endif
 125          
 126          BOOL       IICRead(BYTE         cDeviceAddress,
 127                                               WORD               wRegisterAddress,
 128                                               BYTE*            pacBuffer,
 129                                       BYTE               cBufferCount,
 130                                       BOOL     bFlag)
 131          
 132          {
 133   1              
 134   1              data BYTE i;
 135   1              data BYTE cCount =0;
 136   1              g_bIICError = FALSE;
 137   1              do
 138   1          {
 139   2                   cCount ++;
 140   2                   SendIICStop();
 141   2                   SendBits(cDeviceAddress);
 142   2                   SendIICStart();
 143   2                   IICAckWait();
 144   2                   if (m_bNoAck)
 145   2                           continue;
 146   2                   
 147   2                   if (bFlag)
 148   2                   {
 149   3                           SendBits((BYTE)((wRegisterAddress & 0xFF00) >> 8));
 150   3                           IICAckWait();
 151   3                               if (m_bNoAck)
 152   3                               continue;
 153   3                    }
 154   2                           SendBits((BYTE)(wRegisterAddress & 0x00FF));
 155   2                            IICAckWait();
 156   2                             if (m_bNoAck)
 157   2                           continue;
 158   2             
 159   2                          SendIICStop();
 160   2                          cDeviceAddress = cDeviceAddress | 0x01;
 161   2                          SendBits(cDeviceAddress);
 162   2                          SendIICStart();
 163   2                          IICAckWait();
 164   2                          if (m_bNoAck)
 165   2                        continue;
 166   2                          
 167   2                  pacBuffer[0]= MBUF;
 168   2      
 169   2                       for(i = 0; i < cBufferCount - 1; i++)
 170   2                      {
 171   3                          
 172   3                         IICAckWait();
 173   3                         if (m_bNoAck)
 174   3                         break;
 175   3                         pacBuffer[i]= MBUF;
 176   3                       }
 177   2                       
 178   2                         if (m_bNoAck)
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 4   

 179   2                         continue;
 180   2                   
 181   2                            IICCTR = 0x05;
 182   2                               IICAckWait();
 183   2                            if (m_bNoAck)
 184   2                             continue;
 185   2                   
 186   2                    pacBuffer[i]= MBUF;
 187   2      
 188   2          }while (IIC_PROCESS_MAX > cCount && m_bNoAck );
 189   1             SendIICStop();
 190   1          
 191   1             if(m_bNoAck)
 192   1               g_bIICError = TRUE;
 193   1             return  g_bIICError;
 194   1      }
 195          
 196          
 197          static void IICAckWait(void)
 198          {
 199   1          _nop_ ();
 200   1          _nop_ ();
 201   1          _nop_ ();
 202   1          _nop_ ();
 203   1          
 204   1          m_cIICTimer = IIC_WAIT_ACK_TIME;
 205   1          while((m_cIICTimer > 0) && ((INTFLG1 & 0x1) == 0));
 206   1            
 207   1          if (( IICSTUS1 & 0x01 ) == 0)
 208   1                  m_bNoAck = 0;
 209   1          else
 210   1                  m_bNoAck = 1; 
 211   1      
 212   1          INTFLG1 = 0;
 213   1      }
 214          
 215          void IICTimerProcess(void)
 216          {
 217   1              if (m_cIICTimer)
 218   1          m_cIICTimer --;
 219   1      }
 220          
 221          //HM added,06/07/14
 222          // ---------------------------------------------------------------------------
 223          //Write register value
 224          //
 225          // Params:
 226          //  cSlaveAddr: Slave Address
 227          //  cRegAddr: Register addr
 228          // cRegValue: Register value
 229          //
 230          // Return:
 231          //  None
 232          // ---------------------------------------------------------------------------
 233          void dvRegisterWrite(BYTE cSlaveAddr,BYTE cRegAddr,BYTE cRegValue)
 234          {
 235   1         IICWrite(cSlaveAddr,cRegAddr,&cRegValue,1,0);
 236   1      }
 237          #ifdef IIC
              // ---------------------------------------------------------------------------
              //Read register value
              //
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 5   

              // Params:
              //  cSlaveAddr: Slave Address
              //  cRegAddr: Register addr
              // pcRegValue: Register value
              //
              // Return:
              //  None
              // ---------------------------------------------------------------------------
              void dvRegisterRead(BYTE cSlaveAddr,BYTE cRegAddr,BYTE *pcRegValue)
              {
                   IICRead(cSlaveAddr,cRegAddr,pcRegValue,1,0);
                 
              }
              #endif
 255          // ---------------------------------------------------------------------------
 256          // Write some bits of the register
 257          //
 258          // Params:
 259          //  cSlaveAddr : Slave Address
 260          //  cRegAddr: Register addr
 261          // cMaskValue:Mask value
 262          // cRegValue: Value for mask bits
 263          //
 264          // Return:
 265          //  None
 266          // ---------------------------------------------------------------------------
 267          void dvRegisterMaskWrite (BYTE cSlaveAddr,BYTE cRegAddr, BYTE cMaskValue,BYTE cRegValue)
 268          {
 269   1           BYTE cValue,cMask;
 270   1            cMask = cMaskValue;
 271   1           IICRead(cSlaveAddr,cRegAddr,&cValue,1,0);
 272   1            cValue &=(~cMaskValue);
 273   1             while(!(cMask&0x01))
 274   1              {
 275   2                  cMask = cMask>>1;
 276   2                  cRegValue = cRegValue<<1;
 277   2              }
 278   1               cValue |= (cRegValue&cMaskValue);
 279   1             IICWrite(cSlaveAddr,cRegAddr,&cValue,1,0);
 280   1            
 281   1      }
 282          #if 0
              // ---------------------------------------------------------------------------
              // Read some bits of the register
              //
              // Params:
              //  cSlaveAddr : Slave Address
              //  cRegAddr: Register addr
              // cMaskValue:Mask value
              // pcRegValue: Value for mask bits
              //
              // Return:
              //  None
              // ---------------------------------------------------------------------------
              void dvRegisterMaskRead (BYTE cSlaveAddr,BYTE cRegAddr, BYTE  cMaskValue,BYTE *pcRegValue)
              {
                  BYTE cValue,cMask;
                  IICRead(cSlaveAddr,cRegAddr,&cValue,1,0);
                
                    cMask = cMaskValue;
                    cValue = cValue&cMaskValue;
                     while(!(cMask&0x01))
C51 COMPILER V7.50   DVIIC                                                                 01/17/2007 12:46:54 PAGE 6   

                      {
                          cMask = cMask>>1;
                          cValue = cValue>>1;
                      }
                       *pcRegValue = cValue;               
              }
              
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    643    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      1      22
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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