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

📄 ram.lst

📁 使用于克隆器
💻 LST
字号:
C51 COMPILER V7.50   RAM                                                                   07/03/2006 14:17:07 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE RAM
OBJECT MODULE PLACED IN ..\..\OUTPUT\NTSC_SOUTH\Ram.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\KERNEL\Ram.c OPTIMIZE(9,SIZE) BROWSE ORDER INCDIR(..\..\INC\;..\..\UI
                    -\NTSC_SOUTH\) DEFINE(PABLO,MCU_MTV412M,OLGA) DEBUG OBJECTEXTEND PRINT(..\..\OUTPUT\NTSC_SOUTH\Ram.lst) OBJECT(..\..\OUTP
                    -UT\NTSC_SOUTH\Ram.obj)

line level    source

   1          /******************************************************************************
   2           Copyright (c) 2003 MStar Semiconductor, Inc.
   3           All rights reserved.
   4          
   5           [Module Name]: Ram.c
   6           [Date]:        16-Dec-2003
   7           [Comment]:
   8             EEPROM access subroutines.
   9           [Reversion History]:
  10          *******************************************************************************/
  11          
  12          #define _RAM_C_
  13          
  14          // System
  15          
  16          // Common
  17          #include "define.h"
  18          #include "mcu.h"
  19          #include "userdef.h"
  20          // External
  21          #include "board.h"
  22          #include "i2c.h"
  23          #include "common.h"
  24          #include "global.h"
  25          
  26          // Internal
  27          #include "ram.h"
  28          
  29          ///////////////////////////////////////////////////////////////////////////////
  30          // <Function>: rmReadByte
  31          //
  32          // <Description>: Read byte from EEPROM.
  33          //
  34          // <Returns> : Read byte.
  35          //
  36          // <Parameter>:  -  <Flow>  -  <Description>
  37          //   wIndex      -    In    -   index
  38          //-----------------------------------------------------------------------------
  39          //
  40          ///////////////////////////////////////////////////////////////////////////////
  41          BYTE rmReadByte(WORD wIndex)
  42          {
  43   1          if (RM_EEPROM_TYPE == RM_TYPE_24C16)
  44   1          {
  45   2              return i2cReadByte(rmCalDeviceAdr(wIndex), LOBYTE(wIndex));
  46   2          }
  47   1          else if (RM_EEPROM_TYPE == RM_TYPE_24C32)
  48   1          {
  49   2              BYTE ucBuf; // byte buffer
  50   2      
  51   2              rmBurstReadBytes(wIndex, &ucBuf, sizeof(ucBuf));
  52   2              return ucBuf;
  53   2          }
C51 COMPILER V7.50   RAM                                                                   07/03/2006 14:17:07 PAGE 2   

  54   1      }
  55          
  56          ///////////////////////////////////////////////////////////////////////////////
  57          // <Function>: rmWriteByte
  58          //
  59          // <Description>: Write byte to EEPROM.
  60          //
  61          // <Returns> : None
  62          //
  63          // <Parameter>:  -  <Flow>  -  <Description>
  64          //   wIndex      -    In    -   index
  65          //   ucVal       -    In    -   data
  66          //-----------------------------------------------------------------------------
  67          //
  68          ///////////////////////////////////////////////////////////////////////////////
  69          void rmWriteByte(WORD wIndex, BYTE ucVal)
  70          {
  71   1          if (RM_EEPROM_TYPE == RM_TYPE_24C16)
  72   1              i2cWriteByte(rmCalDeviceAdr(wIndex), LOBYTE(wIndex), ucVal);
  73   1      #if(RM_EEPROM_TYPE == RM_TYPE_24C32)
                  else if(RM_EEPROM_TYPE == RM_TYPE_24C32)
                      rmPageWrite(wIndex, &ucVal, sizeof(ucVal));
              #endif
  77   1      }
  78          
  79          ///////////////////////////////////////////////////////////////////////////////
  80          // <Function>: rmBurstReadBytes
  81          //
  82          // <Description>: EEPROM burst read bytes
  83          //
  84          // <Parameter>:  -  <Flow>  -  <Description>
  85          //   wIndex      -    In    -   index
  86          //   pBuf        -    Out   -   buffer pointer
  87          //   ucBufLen    -    In    -   buffer length
  88          //-----------------------------------------------------------------------------
  89          //
  90          ///////////////////////////////////////////////////////////////////////////////
  91          void rmBurstReadBytes(WORD wIndex, BYTE* pBuf, BYTE ucBufLen)
  92          {
  93   1          if (RM_EEPROM_TYPE == RM_TYPE_24C16)
  94   1          {
  95   2              i2cBurstReadBytes(rmCalDeviceAdr(wIndex), LOBYTE(wIndex), pBuf, ucBufLen);
  96   2          }
  97   1          else if (RM_EEPROM_TYPE == RM_TYPE_24C32)
  98   1          {
  99   2              BYTE ucDummy; // loop dummy
 100   2      
 101   2              ucDummy = I2C_ACCESS_DUMMY_TIME;
 102   2              while (ucDummy--)
 103   2              {
 104   3                  if (i2c_AccessStart(RM_DEVICE_ADR, I2C_TRANS_WRITE) == FALSE)
 105   3                      continue;
 106   3      
 107   3                  if (i2c_SendByte(HIBYTE(wIndex)) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 108   3                      continue;
 109   3      
 110   3                  if (i2c_SendByte(LOBYTE(wIndex)) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 111   3                      continue;
 112   3      
 113   3                  if (i2c_AccessStart(RM_DEVICE_ADR, I2C_TRANS_READ) == FALSE)
 114   3                      continue;
 115   3      
C51 COMPILER V7.50   RAM                                                                   07/03/2006 14:17:07 PAGE 3   

 116   3                  while (ucBufLen--) // loop to burst read
 117   3                  {
 118   4                      *pBuf = i2c_ReceiveByte(ucBufLen); // receive byte
 119   4      
 120   4                      pBuf++; // next byte pointer
 121   4                  } // while
 122   3      
 123   3                  break;
 124   3              } // while
 125   2      
 126   2              i2c_Stop();
 127   2              Delay1ms(8);
 128   2          }
 129   1      }
 130          
 131          ///////////////////////////////////////////////////////////////////////////////
 132          // <Function>: rmPageWrite
 133          //
 134          // <Description>: EEPROM page write for 24C32 only!!
 135          
 136          // <Parameter>:  -  <Flow>  -  <Description>
 137          //   wIndex      -    In    -   index
 138          //   pBuf        -    Out   -   buffer pointer
 139          //   ucBufLen    -    In    -   buffer length
 140          //-----------------------------------------------------------------------------
 141          //
 142          ///////////////////////////////////////////////////////////////////////////////
 143          
 144          void rmPageWrite(WORD wIndex, BYTE* pBuf, BYTE ucBufLen)
 145          {
 146   1          BYTE ucDummy; // loop dummy
 147   1      
 148   1          ucDummy = I2C_ACCESS_DUMMY_TIME;
 149   1          while (ucDummy--)
 150   1          {
 151   2              if (i2c_AccessStart(RM_DEVICE_ADR, I2C_TRANS_WRITE) == FALSE)
 152   2                  continue;
 153   2      
 154   2              if (i2c_SendByte(HIBYTE(wIndex)) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 155   2                  continue;
 156   2      
 157   2              if (i2c_SendByte(LOBYTE(wIndex)) == I2C_NON_ACKNOWLEDGE) // check non-acknowledge
 158   2                  continue;
 159   2      
 160   2              while (ucBufLen--) // loop of writting data
 161   2              {
 162   3                  i2c_SendByte(*pBuf); // send byte
 163   3      
 164   3                  pBuf++; // next byte pointer
 165   3              } // while
 166   2      
 167   2              break;
 168   2          } // while
 169   1      
 170   1          i2c_Stop();
 171   1      }
 172          
 173          ///////////////////////////////////////////////////////////////////////////////
 174          // <Function>: rmBurstWriteBytes
 175          //
 176          // <Description>: EEPROM burst write bytes
 177          //
C51 COMPILER V7.50   RAM                                                                   07/03/2006 14:17:07 PAGE 4   

 178          // <Parameter>:  -  <Flow>  -  <Description>
 179          //   wIndex      -    In    -   index
 180          //   pBuf        -    Out   -   buffer pointer
 181          //   ucBufLen    -    In    -   buffer length
 182          //-----------------------------------------------------------------------------
 183          //
 184          ///////////////////////////////////////////////////////////////////////////////
 185          void rmBurstWriteBytes(WORD wIndex, BYTE* pBuf, BYTE ucBufLen)
 186          {
 187   1          BYTE ucWriteCount; // write counter
 188   1          BYTE ucRemainLen; // i2c word address
 189   1      
 190   1          while (1)
 191   1          {
 192   2              // check page write roll over
 193   2              if (ucBufLen > RM_PAGE_WRITE_LEN)
 194   2                  ucWriteCount = RM_PAGE_WRITE_LEN;
 195   2              else
 196   2                  ucWriteCount = ucBufLen;
 197   2      
 198   2              // check word address higher than page write bits
 199   2              ucRemainLen = LOBYTE(wIndex) % RM_PAGE_WRITE_LEN;
 200   2              if (ucRemainLen) // check ramain
 201   2              {
 202   3                  ucRemainLen = RM_PAGE_WRITE_LEN - ucRemainLen;
 203   3                  if (ucWriteCount > ucRemainLen) // check not roll over
 204   3                      ucWriteCount = ucRemainLen;
 205   3              }
 206   2      
 207   2              // EEPROM page write
 208   2              if (RM_EEPROM_TYPE == RM_TYPE_24C16)
 209   2              {
 210   3                  i2cBurstWriteBytes(rmCalDeviceAdr(wIndex), LOBYTE(wIndex), pBuf, ucWriteCount);
 211   3              }
 212   2              else if (RM_EEPROM_TYPE == RM_TYPE_24C32)
 213   2              {
 214   3                  rmPageWrite(wIndex, pBuf, ucWriteCount);
 215   3              }
 216   2      
 217   2              // check end of buffer
 218   2              ucBufLen -= ucWriteCount;
 219   2              if (ucBufLen == 0)
 220   2                  break;
 221   2      
 222   2              wIndex += ucWriteCount; // next word address
 223   2              pBuf += ucWriteCount; // next buffer pointer
 224   2      
 225   2              Delay1ms(8);
 226   2          } // while
 227   1      }
 228          
 229          
 230          
 231          
 232          
 233          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    245    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.50   RAM                                                                   07/03/2006 14:17:07 PAGE 5   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      22
   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 + -