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

📄 eeprom.lst

📁 HIGH_SPEED_USB_To_ATA(IDE)Firmware相关代码(EZ USB FX2芯片)
💻 LST
字号:
C51 COMPILER V7.50   EEPROM                                                                11/07/2006 14:52:11 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c ROM(COMPACT) OPTIMIZE(9,SPEED) REGFILE(.\fx2_ata.ORC) BROWSE ORDER
                    - INCDIR(c:\cypress\usb\target\inc) DEFINE(GPIF=0,FLASH=0,DEVICE_TYPE_IS_SCSI=1,DEVICE_TYPE_IS_IDE=1,VBUS_DETECT=1) DEBUG
                    - OBJECTEXTEND CODE

line level    source

   1          //-----------------------------------------------------------------------------
   2          //   File:      eeprom.c
   3          //   Contents:   EEPROM update firmware source.  (Write only)
   4          //
   5          //   indent 3.  NO TABS!
   6          //
   7          //   Copyright (c) 2002 Cypress Semiconductor
   8          //
   9          // $Archive: /USB/atapifx2/software/eeprom.c $
  10          // $Date: 1/21/02 2:36p $
  11          // $Revision: 3 $
  12          //-----------------------------------------------------------------------------
  13          #include "fx2.h"
  14          #include "fx2regs.h"
  15          #include "atapi.h"
  16          
  17          #define EEPROM_ADDR 0x51
  18          #define EEPROM_PAGE_SIZE 16
  19          
  20          extern void    EEWaitForStop();
  21          static void EEStartAndAddr();
  22          extern void WaitForEEPROMWrite();
  23          
  24          ///////////////////////////////////////////////////////////////////////////////////////
  25          
  26          // Write the entire EEPROM
  27          void EEPROMWrite(WORD len)
  28          {
  29   1         WORD i;
  30   1         WORD addr;
  31   1      
  32   1         for (addr = 0; addr < len; addr += wPacketSize)
  33   1            {
  34   2            // Wait for host to send data
  35   2            while(EP2CS & bmEPEMPTY)       
  36   2               ;
  37   2      
  38   2            // Write the data from the USB buffer to the EEPROM
  39   2            for (i = 0; i < wPacketSize; i+= EEPROM_PAGE_SIZE)
  40   2               {
  41   3               EEPROMWritePage(addr+i, EP2FIFOBUF+i);
  42   3               }
  43   2      
  44   2            // Give up the buffer
  45   2            EP2BCL = 0x80;     
  46   2            }
  47   1      }
  48          // Write one page of data to the EEPROM.
  49          void EEPROMWritePage(WORD addr, BYTE xdata * ptr)
  50          {
  51   1         BYTE         i;
  52   1         BYTE                 ee_str[EEPROM_PAGE_SIZE+2];
  53   1      
C51 COMPILER V7.50   EEPROM                                                                11/07/2006 14:52:11 PAGE 2   

  54   1              ee_str[0] = MSB(addr);
  55   1              ee_str[1] = LSB(addr);
  56   1              for (i = 2; i < EEPROM_PAGE_SIZE+2; i++)
  57   1              {
  58   2              ee_str[i] = ptr[i-2];
  59   2              }
  60   1      
  61   1         // Make sure the i2c interface is idle
  62   1         EEWaitForStop();
  63   1         
  64   1         // Write the device address   
  65   1         EEStartAndAddr();
  66   1         for (i = 0; i < EEPROM_PAGE_SIZE + 2; i++)
  67   1         {
  68   2            while (!(I2CS & 1))  // Poll the done bit
  69   2               ;
  70   2            I2DAT = ee_str[i];
  71   2         }    
  72   1         while (!(I2CS & 1))  // Poll the done bit
  73   1            ;
  74   1         I2CS |= bmSTOP;
  75   1         WaitForEEPROMWrite();
  76   1      }
  77          
  78          void EEStartAndAddr()
  79          {
  80   1            I2CS |= bmSTART;
  81   1            I2DAT = EEPROM_ADDR << 1;
  82   1      }
C51 COMPILER V7.50   EEPROM                                                                11/07/2006 14:52:11 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _EEPROMWrite (BEGIN)
                                           ; SOURCE LINE # 27
0000 8E00        R     MOV     len,R6
0002 8F00        R     MOV     len+01H,R7
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 32
0004 E4                CLR     A
0005 F500        R     MOV     addr,A
0007 F500        R     MOV     addr+01H,A
0009         ?C0001:
0009 C3                CLR     C
000A E500        R     MOV     A,addr+01H
000C 9500        R     SUBB    A,len+01H
000E E500        R     MOV     A,addr
0010 9500        R     SUBB    A,len
0012 504E              JNC     ?C0009
                                           ; SOURCE LINE # 33
0014         ?C0004:
                                           ; SOURCE LINE # 35
0014 90E6A3            MOV     DPTR,#0E6A3H
0017 E0                MOVX    A,@DPTR
0018 20E2F9            JB      ACC.2,?C0004
001B         ?C0005:
                                           ; SOURCE LINE # 39
001B E4                CLR     A
001C F500        R     MOV     i,A
001E F500        R     MOV     i+01H,A
0020         ?C0006:
0020 C3                CLR     C
0021 E500        R     MOV     A,i+01H
0023 9500        E     SUBB    A,wPacketSize+01H
0025 E500        R     MOV     A,i
0027 9500        E     SUBB    A,wPacketSize
0029 5023              JNC     ?C0007
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
002B E500        R     MOV     A,addr+01H
002D 2500        R     ADD     A,i+01H
002F FF                MOV     R7,A
0030 E500        R     MOV     A,addr
0032 3500        R     ADDC    A,i
0034 FE                MOV     R6,A
0035 E4                CLR     A
0036 2500        R     ADD     A,i+01H
0038 FD                MOV     R5,A
0039 E500        R     MOV     A,i
003B 34F0              ADDC    A,#0F0H
003D FC                MOV     R4,A
003E 120000      R     LCALL   _EEPROMWritePage
                                           ; SOURCE LINE # 42
0041 7410              MOV     A,#010H
0043 2500        R     ADD     A,i+01H
0045 F500        R     MOV     i+01H,A
0047 E4                CLR     A
0048 3500        R     ADDC    A,i
004A F500        R     MOV     i,A
004C 80D2              SJMP    ?C0006
004E         ?C0007:
                                           ; SOURCE LINE # 45
C51 COMPILER V7.50   EEPROM                                                                11/07/2006 14:52:11 PAGE 4   

004E 90E691            MOV     DPTR,#0E691H
0051 7480              MOV     A,#080H
0053 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 46
0054 E500        E     MOV     A,wPacketSize+01H
0056 2500        R     ADD     A,addr+01H
0058 F500        R     MOV     addr+01H,A
005A E500        E     MOV     A,wPacketSize
005C 3500        R     ADDC    A,addr
005E F500        R     MOV     addr,A
0060 80A7              SJMP    ?C0001
                                           ; SOURCE LINE # 47
0062         ?C0009:
0062 22                RET     
             ; FUNCTION _EEPROMWrite (END)

             ; FUNCTION _EEPROMWritePage (BEGIN)
                                           ; SOURCE LINE # 49
;---- Variable 'addr' assigned to Register 'R2/R3' ----
0000 AA06              MOV     R2,AR6
;---- Variable 'ptr' assigned to Register 'R4/R5' ----
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 54
0002 EA                MOV     A,R2
0003 F500        R     MOV     ee_str,A
                                           ; SOURCE LINE # 55
0005 EF                MOV     A,R7
0006 F500        R     MOV     ee_str+01H,A
                                           ; SOURCE LINE # 56
;---- Variable 'i' assigned to Register 'R7' ----
0008 7F02              MOV     R7,#02H
000A         ?C0010:
                                           ; SOURCE LINE # 57
                                           ; SOURCE LINE # 58
000A EF                MOV     A,R7
000B 24FE              ADD     A,#0FEH
000D FB                MOV     R3,A
000E E4                CLR     A
000F 34FF              ADDC    A,#0FFH
0011 FA                MOV     R2,A
0012 ED                MOV     A,R5
0013 2B                ADD     A,R3
0014 F582              MOV     DPL,A
0016 EC                MOV     A,R4
0017 3A                ADDC    A,R2
0018 F583              MOV     DPH,A
001A E0                MOVX    A,@DPTR
001B FE                MOV     R6,A
001C 7400        R     MOV     A,#LOW ee_str
001E 2F                ADD     A,R7
001F F8                MOV     R0,A
0020 A606              MOV     @R0,AR6
                                           ; SOURCE LINE # 59
0022 0F                INC     R7
0023 BF12E4            CJNE    R7,#012H,?C0010
0026         ?C0011:
                                           ; SOURCE LINE # 62
0026 120000      E     LCALL   EEWaitForStop
                                           ; SOURCE LINE # 65
0029 120000      R     LCALL   EEStartAndAddr
                                           ; SOURCE LINE # 66
002C E4                CLR     A
C51 COMPILER V7.50   EEPROM                                                                11/07/2006 14:52:11 PAGE 5   

002D FF                MOV     R7,A
002E         ?C0013:
                                           ; SOURCE LINE # 67
002E         ?C0016:
                                           ; SOURCE LINE # 68
002E 90E678            MOV     DPTR,#0E678H
0031 E0                MOVX    A,@DPTR
0032 30E0F9            JNB     ACC.0,?C0016
0035         ?C0017:
                                           ; SOURCE LINE # 70
0035 7400        R     MOV     A,#LOW ee_str
0037 2F                ADD     A,R7
0038 F8                MOV     R0,A
0039 E6                MOV     A,@R0
003A 90E679            MOV     DPTR,#0E679H
003D F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 71
003E 0F                INC     R7
003F BF12EC            CJNE    R7,#012H,?C0013
0042         ?C0018:
                                           ; SOURCE LINE # 72
0042 90E678            MOV     DPTR,#0E678H
0045 E0                MOVX    A,@DPTR
0046 30E0F9            JNB     ACC.0,?C0018
0049         ?C0019:
                                           ; SOURCE LINE # 74
0049 90E678            MOV     DPTR,#0E678H
004C E0                MOVX    A,@DPTR
004D 4440              ORL     A,#040H
004F F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 75
0050 020000      E     LJMP    WaitForEEPROMWrite
             ; FUNCTION _EEPROMWritePage (END)

             ; FUNCTION EEStartAndAddr (BEGIN)
                                           ; SOURCE LINE # 78
                                           ; SOURCE LINE # 79
                                           ; SOURCE LINE # 80
0000 90E678            MOV     DPTR,#0E678H
0003 E0                MOVX    A,@DPTR
0004 4480              ORL     A,#080H
0006 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 81
0007 A3                INC     DPTR
0008 74A2              MOV     A,#0A2H
000A F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 82
000B 22                RET     
             ; FUNCTION EEStartAndAddr (END)



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