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

📄 eeprom.lst

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


C51 COMPILER V7.50, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN .\OBJ\EEPROM.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE EEPROM.C ROM(COMPACT) OPTIMIZE(9,SPEED) NOAREGS DEFINE(PROJECT=DMO04015800,
                    -MCU_CFG=BIT5101,VP_IF_CFG=VP_IF_BITEK) PRINT(.\LST\EEPROM.lst) OBJECT(.\OBJ\EEPROM.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: EEPROM.C
  10          
  11              Purpose: Implementation of EEPROM module.
  12          
  13              Version: 0.01                                   07:24PM  2005/05/13
  14          
  15              Compiler: Keil 8051 C Compiler v8.01
  16          
  17              Reference:
  18              [1] AN709 System Level Design Considerations When Using I2C Serial EEPROM
  19                  Devices, 1999 Microchip Technology Inc.
  20          
  21             ----------------------------------------------------------------------
  22              Modification:
  23          
  24              R0.01 07:24PM  2005/05/13 Jeffrey Chang
  25              Reason:
  26                  1. Original.
  27              Solution:
  28           
  29             ********************************************************************** */
  30          
  31          #define _EEPROM_C_
  32          
  33          /* ------------------------------------
  34              Header Files
  35             ------------------------------------ */
  36          
  37          #include "eeprom.h"
  38          #include "i2c.h"
  39          #include "platform.h"
  40          #include "timer.h"
  41          
  42          
  43          /* ------------------------------------
  44              Macro Definitions
  45             ------------------------------------ */
  46          
  47          
  48          /* ------------------------------------
  49              Type Definitions
  50             ------------------------------------ */
  51          
  52          
  53          /* ------------------------------------
  54              Variables Definitions
C51 COMPILER V7.50   EEPROM                                                                02/05/2007 16:33:24 PAGE 2   

  55             ------------------------------------ */
  56          
  57          /* ------------------------------------
  58              Function Prototypes
  59             ------------------------------------ */
  60          
  61          
  62          /* -------------------------------------------------------------------
  63              Name: EEPROM_Default -
  64              Purpose:
  65                  This function writes default values of data structures to 
  66                  specific address of EEPROM block.
  67              Passed: None.
  68              Returns: None.
  69              Notes:
  70             ------------------------------------------------------------------- */
  71          void EEPROM_Default (void)
  72          {
  73   1          EEPROM_TxBurst(EGD_ADDR,
  74   1                         sizeof(tsEGD_Default),
  75   1                         (UB8 *)&tsEGD_Default);
  76   1      
  77   1          EEPROM_TxBurst(EYD_ADDR,
  78   1                         sizeof(tsEYD_Default),
  79   1                         (UB8 *)&tsEYD_Default);
  80   1      } /* EEPROM_Default */
  81          
  82          
  83          /* -------------------------------------------------------------------
  84              Name: EEPROM_Init -
  85              Purpose: To initialize the EEPROM module.
  86              Passed: None.
  87              Returns: None.
  88              Notes:
  89             ------------------------------------------------------------------- */
  90          void EEPROM_Init (void)
  91          {
  92   1          // ++++++++++++++++++++++++++++++++
  93   1          // [JC011] Added by JC 03:15PM  2006/04/26
  94   1          // [1]2 Forcing EEPROM internal reset via software
  95   1          I2C_Start();
  96   1      
  97   1          I2C_TxData(0xFF);
  98   1          I2C_SetNAK();
  99   1      
 100   1          I2C_Start();
 101   1          I2C_Stop();
 102   1          // ++++++++++++++++++++++++++++++++
 103   1      } /* EEPROM_Init */
 104          
 105          
 106          #if (EEPROM_RX_BURST)
 107          /* -------------------------------------------------------------------
 108              Name: EEPROM_RxBurst -
 109              Purpose: To receive bulk data from I2C EEPROM.
 110              Passed:
 111                  UW16 wAddr  = EEPROM address.
 112                  UB8  bCnt   = The number of data which will be received
 113                              excluding EEPROM address (bCnt: 1..255).
 114                  UB8  *pbData    = The pointer which points to the first data item.
 115              Returns: None.
 116              Notes:
C51 COMPILER V7.50   EEPROM                                                                02/05/2007 16:33:24 PAGE 3   

 117                  The EEPROM_MAD should be the slave device's 'WRITE' module addres,
 118                  not 'READ' one.
 119             ------------------------------------------------------------------- */
 120          void EEPROM_RxBurst (
 121          UW16 wAddr,         /* EEPROM address */
 122          UB8  bCnt,          /* The number of data which will be transmitted */
 123          UB8  *pbData        /* Point to the first DATA item */
 124          )
 125          {
 126   1          UB8     bIdx;
 127   1      
 128   1      
 129   1      
 130   1          I2C_Start();
 131   1      
 132   1          /* --------------------------------
 133   1              Write
 134   1             -------------------------------- */
 135   1          I2C_TxData(EEPROM_MAD | ((wAddr >> 8) << 1));
 136   1          I2C_GetACK();
 137   1      
 138   1          I2C_TxData(wAddr & 0x00FF);
 139   1          I2C_GetACK();
 140   1      
 141   1          /* --------------------------------
 142   1              Read
 143   1             -------------------------------- */
 144   1          I2C_Start();
 145   1          I2C_TxData(EEPROM_MAD | ((wAddr >> 8) << 1) | 0x01);
 146   1          I2C_GetACK();
 147   1      
 148   1      
 149   1          for (bIdx = 0; bIdx < (bCnt - 1); bIdx++)
 150   1          {
 151   2              *pbData++ = I2C_RxData();
 152   2      
 153   2              I2C_SetACK();
 154   2          } /* for */
 155   1      
 156   1      
 157   1          /* --------------------------------
 158   1              Last Read
 159   1             -------------------------------- */
 160   1          *pbData = I2C_RxData();
 161   1          I2C_SetNAK();
 162   1      
 163   1          I2C_Stop();
 164   1      
 165   1      } /* EEPROM_RxBurst */
 166          #endif
 167          
 168          
 169          #if (EEPROM_RX_BYTE)
              /* -------------------------------------------------------------------
                  Name: EEPROM_RxByte -
                  Purpose:
                      To receive one byte data from I2C slave device.
              
                  Passed:
                      wAddr = EEPROM address.
              
                  Returns:
C51 COMPILER V7.50   EEPROM                                                                02/05/2007 16:33:24 PAGE 4   

                      The one byte data.
              
                  Notes:
                      The bSLA should be the slave device's 'WRITE' module addres,
                      not 'READ' one.
                 ------------------------------------------------------------------- */
              UB8 EEPROM_RxByte (UW16 wAddr)
              {
                  UB8 bData;
              
              
                  I2C_Start();
              
                  /* --------------------------------
                      Write
                     -------------------------------- */
                  /* 'WRITE' MAD and High byte of address */
                  I2C_TxData(EEPROM_MAD | ((wAddr >> 8) << 1));
                  I2C_GetACK();
              
                  /* Low byte of address */
                  I2C_TxData(wAddr & 0x00FF);
                  I2C_GetACK();
              
                  /* --------------------------------
                      Read
                     -------------------------------- */
                  I2C_Start();
                  I2C_TxData(EEPROM_MAD | ((wAddr >> 8) << 1) | 0x01);
                  I2C_GetACK();
              
                  /* --------------------------------
                      Last Read
                     -------------------------------- */
                  bData = I2C_RxData();
                  I2C_SetNAK();
              
                  I2C_Stop();
              
                  return( bData );
              
              } /* EEPROM_RxByte */
              #endif
 222          
 223          
 224          #if (EEPROM_TX_BURST)
 225          /* -------------------------------------------------------------------
 226              Name: EEPROM_TxBurst -
 227              Purpose:
 228                  To transmit bulk data to I2C EEPROM.
 229          
 230              Passed:
 231                  UW16 wAddr  = EEPROM address.
 232                  UB8  bCnt   = The number of data which will be transmitted
 233                              excluding EEPROM address (bCnt: 1..255).
 234                  UB8  *pbData    = The pointer which points to the first data item.
 235          
 236              Returns: None.
 237              Notes:
 238             ------------------------------------------------------------------- */
 239          void EEPROM_TxBurst (
 240          UW16 wAddr,         /* EEPROM address */
C51 COMPILER V7.50   EEPROM                                                                02/05/2007 16:33:24 PAGE 5   

 241          UB8  bCnt,          /* The number of data which will be transmitted */
 242          UB8  *pbData        /* Point to the first DATA item */
 243          )
 244          {
 245   1          for (   ; bCnt; bCnt--)
 246   1          {
 247   2              I2C_TxByte(EEPROM_MAD | ((wAddr >> 8) << 1), wAddr++, *pbData++);
 248   2      
 249   2              TIMER_DelayMS(EEPROM_WRITE_CYCLE_TIME);
 250   2          } // for
 251   1      } /* EEPROM_TxBurst */
 252          #endif
 253          
 254          
 255          #if (EEPROM_TX_BYTE)
              /* -------------------------------------------------------------------
                  Name: EEPROM_TxByte -
                  Purpose:
                      To transmit one byte data to I2C slave device.
              
                  Passed:
                  Returns: None.
                  Notes:
                      The bSLA should be the slave device's 'WRITE' module addres,
                      not 'READ' one.
                 ------------------------------------------------------------------- */
              void EEPROM_TxByte (
              UW16    wAddr,         /* I2C sub-address */
              UB8     bData          /* Data item */
              )
              {
                  I2C_Start();
              
                  I2C_TxData(EEPROM_MAD | ((wAddr >> 8) << 1));
                  I2C_GetACK();
              
                  I2C_TxData(wAddr & 0x00FF);
                  I2C_GetACK();
              
                  I2C_TxData(bData);
                  I2C_GetACK();
              
                  I2C_Stop();
              
                  TIMER_DelayMS(EEPROM_WRITE_CYCLE_TIME);
              } /* EEPROM_TxByte */
              #endif
 288          
 289          
 290          
 291          /* -------------------------------------------------------------------
 292              Name:  -
 293              Purpose: .
 294              Passed: None.
 295              Returns: None.
 296              Notes:
 297             ------------------------------------------------------------------- */
 298          
 299          
 300          /* **********************************************************************
 301          
 302              Description:
C51 COMPILER V7.50   EEPROM                                                                02/05/2007 16:33:24 PAGE 6   

 303          
 304          
 305             ********************************************************************** */
 306          
 307          /* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */


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