AX51 MACRO ASSEMBLER  SILABS_STARTUP                                                        04/29/16 08:49:47 PAGE     1


MACRO ASSEMBLER AX51 V3.13.0.0
OBJECT MODULE PLACED IN .\src\SILABS_STARTUP.OBJ
ASSEMBLER INVOKED BY: c:\Keil_v5\C51\BIN\AX51.exe C:\Keil_v5\Новая папка\myProject_9\src\SILABS_STARTUP.A51 ERRORPRINT S
                      ET(SMALL) DEBUG MACRO NOMOD51 INCDIR(C:/Keil_v5/Новая папка/myProject_9/inc;C:/SiliconLabs/Simplic
                      ityStudio/v3/developer/sdks/si8051/v3//Device/shared/si8051Base;C:/SiliconLabs/SimplicityStudio/v3
                      /developer/sdks/si8051/v3//Device/EFM8LB1;C:/SiliconLabs/SimplicityStudio/v3/developer/sdks/si8051
                      /v3//Device/EFM8LB1/inc) PRINT(.\src\SILABS_STARTUP.lst) COND SYMBOLS PAGEWIDTH(120) PAGELENGTH(65
                      ) OBJECT(.\src\SILABS_STARTUP.OBJ) 

LOC    OBJ             LINE     SOURCE

                          1     $nomod51 
                          2     ;------------------------------------------------------------------------------
                          3     ;  This file is part of the C51 Compiler package
                          4     ;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
                          5     ;  Version 8.01
                          6     ;
                          7     ;  *** <<< Use Configuration Wizard in Context Menu >>> ***
                          8     ;------------------------------------------------------------------------------
                          9     ;  STARTUP.A51:  This code is executed after processor reset.
                         10     ;
                         11     ;  To translate this file use A51 with the following invocation:
                         12     ;
                         13     ;     A51 STARTUP.A51
                         14     ;
                         15     ;  To link the modified STARTUP.OBJ file to your application use the following
                         16     ;  Lx51 invocation:
                         17     ;
                         18     ;     Lx51 your object file list, STARTUP.OBJ  controls
                         19     ;
                         20     ;------------------------------------------------------------------------------
                         21     ;
                         22     ;  User-defined <h> Power-On Initialization of Memory
                         23     ;
                         24     ;  With the following EQU statements the initialization of memory
                         25     ;  at processor reset can be defined:
                         26     ;
                         27     ; <o> IDATALEN: IDATA memory size <0x0-0x100>
                         28     ;     <i> Note: The absolute start-address of IDATA memory is always 0
                         29     ;     <i>       The IDATA space overlaps physically the DATA and BIT areas.
 0080                    30     IDATALEN        EQU     80H
                         31     ;
                         32     ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF> 
                         33     ;     <i> The absolute start address of XDATA memory
 0000                    34     XDATASTART      EQU     0     
                         35     ;
                         36     ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF> 
                         37     ;     <i> The length of XDATA memory in bytes.
 0000                    38     XDATALEN        EQU     0      
                         39     ;
                         40     ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF> 
                         41     ;     <i> The absolute start address of PDATA memory
 0000                    42     PDATASTART      EQU     0H
                         43     ;
                         44     ; <o> PDATALEN: PDATA memory size <0x0-0xFF> 
                         45     ;     <i> The length of PDATA memory in bytes.
 0000                    46     PDATALEN        EQU     0H
                         47     ;
                         48     ;</h>
                         49     ;------------------------------------------------------------------------------
                         50     ;
AX51 MACRO ASSEMBLER  SILABS_STARTUP                                                        04/29/16 08:49:47 PAGE     2

                         51     ;<h> Reentrant Stack Initialization
                         52     ;
                         53     ;  The following EQU statements define the stack pointer for reentrant
                         54     ;  functions and initialized it:
                         55     ;
                         56     ; <h> Stack Space for reentrant functions in the SMALL model.
                         57     ;  <q> IBPSTACK: Enable SMALL model reentrant stack
                         58     ;     <i> Stack space for reentrant functions in the SMALL model.
 0000                    59     IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
                         60     ;  <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
                         61     ;     <i> Set the top of the stack to the highest location.
 0100                    62     IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  
                         63     ; </h>
                         64     ;
                         65     ; <h> Stack Space for reentrant functions in the LARGE model.      
                         66     ;  <q> XBPSTACK: Enable LARGE model reentrant stack
                         67     ;     <i> Stack space for reentrant functions in the LARGE model.
 0000                    68     XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.
                         69     ;  <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
                         70     ;     <i> Set the top of the stack to the highest location.
 00010000                71     XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1 
                         72     ; </h>
                         73     ;
                         74     ; <h> Stack Space for reentrant functions in the COMPACT model.    
                         75     ;  <q> PBPSTACK: Enable COMPACT model reentrant stack
                         76     ;     <i> Stack space for reentrant functions in the COMPACT model.
 0000                    77     PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
                         78     ;
                         79     ;   <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
                         80     ;     <i> Set the top of the stack to the highest location.
 0100                    81     PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  
                         82     ; </h>
                         83     ;</h>
                         84     ;------------------------------------------------------------------------------
                         85     ;
                         86     ;  Memory Page for Using the Compact Model with 64 KByte xdata RAM
                         87     ;  <e>Compact Model Page Definition
                         88     ;
                         89     ;  <i>Define the XDATA page used for PDATA variables. 
                         90     ;  <i>PPAGE must conform with the PPAGE set in the linker invocation.
                         91     ;
                         92     ; Enable pdata memory page initalization
 0000                    93     PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
                         94     ;
                         95     ; <o> PPAGE number <0x0-0xFF> 
                         96     ; <i> uppermost 256-byte address of the page used for PDATA variables.
 0000                    97     PPAGE           EQU     0
                         98     ;
                         99     ; <o> SFR address which supplies uppermost address byte <0x0-0xFF> 
                        100     ; <i> most 8051 variants use P2 as uppermost address byte
 00A0                   101     PPAGE_SFR       DATA    0A0H
                        102     ;
                        103     ; </e>
                        104     ;------------------------------------------------------------------------------
                        105     
                        106     ; Standard SFR Symbols 
 00E0                   107     ACC     DATA    0E0H
 00F0                   108     B       DATA    0F0H
 0081                   109     SP      DATA    81H
 0082                   110     DPL     DATA    82H
 0083                   111     DPH     DATA    83H
                        112     
                        113                     NAME    ?C_STARTUP
AX51 MACRO ASSEMBLER  SILABS_STARTUP                                                        04/29/16 08:49:47 PAGE     3

                        114     
                        115     
------                  116     ?C_C51STARTUP   SEGMENT   CODE
------                  117     ?STACK          SEGMENT   IDATA
                        118     
------                  119                     RSEG    ?STACK
000000                  120                     DS      1
                        121     
                        122                     EXTRN CODE (?C_START)
                        123                     PUBLIC  ?C_STARTUP
                        124     
000000                  125                     CSEG    AT      0
000000 020000     F     126     ?C_STARTUP:     LJMP    STARTUP1
                        127     
------                  128                     RSEG    ?C_C51STARTUP
                        129     
000000                  130     STARTUP1:
                        131     
                        132     $if  (SILABS_STARTUP = 1)
                                EXTRN   CODE (SiLabs_Startup)
                                                LCALL   SiLabs_Startup
                                $endif 
                        136     
                        137     IF IDATALEN <> 0
000000 787F             138                     MOV     R0,#IDATALEN - 1
000002 E4               139                     CLR     A
000003 F6               140     IDATALOOP:      MOV     @R0,A
000004 D8FD             141                     DJNZ    R0,IDATALOOP
                        142     ENDIF
                        143     
                        144     IF XDATALEN <> 0
                                                MOV     DPTR,#XDATASTART
                                                MOV     R7,#LOW (XDATALEN)
                                  IF (LOW (XDATALEN)) <> 0
                                                MOV     R6,#(HIGH (XDATALEN)) +1
                                  ELSE
                                                MOV     R6,#HIGH (XDATALEN)
                                  ENDIF
                                                CLR     A
                                XDATALOOP:      MOVX    @DPTR,A
                                                INC     DPTR
                                                DJNZ    R7,XDATALOOP
                                                DJNZ    R6,XDATALOOP
                                ENDIF
                        158     
                        159     IF PPAGEENABLE <> 0
                                                MOV     PPAGE_SFR,#PPAGE
                                ENDIF
                        162     
                        163     IF PDATALEN <> 0
                                                MOV     R0,#LOW (PDATASTART)
                                                MOV     R7,#LOW (PDATALEN)
                                                CLR     A
                                PDATALOOP:      MOVX    @R0,A
                                                INC     R0
                                                DJNZ    R7,PDATALOOP
                                ENDIF
                        171     
                        172     IF IBPSTACK <> 0
                                EXTRN DATA (?C_IBP)
                                
                                                MOV     ?C_IBP,#LOW IBPSTACKTOP
                                ENDIF
AX51 MACRO ASSEMBLER  SILABS_STARTUP                                                        04/29/16 08:49:47 PAGE     4

                        177     
                        178     IF XBPSTACK <> 0
                                EXTRN DATA (?C_XBP)
                                
                                                MOV     ?C_XBP,#HIGH XBPSTACKTOP
                                                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
                                ENDIF
                        184     
                        185     IF PBPSTACK <> 0
                                EXTRN DATA (?C_PBP)
                                                MOV     ?C_PBP,#LOW PBPSTACKTOP
                                ENDIF
                        189     
000006 758100     F     190                     MOV     SP,#?STACK-1
                        191     
                        192     ; This code is required if you use L51_BANK.A51 with Banking Mode 4
                        193     ;<h> Code Banking
                        194     ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
                        195     $if  (USE_BANKING = 1)      
                                ;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking 
                               Mode 4.
                                EXTRN CODE (?B_SWITCH0)
                                                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
                                $endif 
                        200     ;</h>
000009 020000     E     201                     LJMP    ?C_START
                        202     
                        203                     END
AX51 MACRO ASSEMBLER  SILABS_STARTUP                                                        04/29/16 08:49:47 PAGE     5

SYMBOL TABLE LISTING
------ ----- -------


N A M E                               T Y P E  V A L U E     ATTRIBUTES

?C_C51STARTUP. . . . . . . . . . . .  C  SEG   00000CH       REL=UNIT, ALN=BYTE
?C_START . . . . . . . . . . . . . .  C  ADDR  -------       EXT
?C_STARTUP . . . . . . . . . . . . .  C  ADDR  0000H     R   SEG=?CO?SILABS_STARTUP?3
?STACK . . . . . . . . . . . . . . .  I  SEG   000001H       REL=UNIT, ALN=BYTE
ACC. . . . . . . . . . . . . . . . .  D  ADDR  00E0H     A   
B. . . . . . . . . . . . . . . . . .  D  ADDR  00F0H     A   
DPH. . . . . . . . . . . . . . . . .  D  ADDR  0083H     A   
DPL. . . . . . . . . . . . . . . . .  D  ADDR  0082H     A   
IBPSTACK . . . . . . . . . . . . . .  N  NUMB  0000H     A   
IBPSTACKTOP. . . . . . . . . . . . .  N  NUMB  0100H     A   
IDATALEN . . . . . . . . . . . . . .  N  NUMB  0080H     A   
IDATALOOP. . . . . . . . . . . . . .  C  ADDR  0003H     R   SEG=?C_C51STARTUP
PBPSTACK . . . . . . . . . . . . . .  N  NUMB  0000H     A   
PBPSTACKTOP. . . . . . . . . . . . .  N  NUMB  0100H     A   
PDATALEN . . . . . . . . . . . . . .  N  NUMB  0000H     A   
PDATASTART . . . . . . . . . . . . .  N  NUMB  0000H     A   
PPAGE. . . . . . . . . . . . . . . .  N  NUMB  0000H     A   
PPAGE_SFR. . . . . . . . . . . . . .  D  ADDR  00A0H     A   
PPAGEENABLE. . . . . . . . . . . . .  N  NUMB  0000H     A   
SP . . . . . . . . . . . . . . . . .  D  ADDR  0081H     A   
STARTUP1 . . . . . . . . . . . . . .  C  ADDR  0000H     R   SEG=?C_C51STARTUP
XBPSTACK . . . . . . . . . . . . . .  N  NUMB  0000H     A   
XBPSTACKTOP. . . . . . . . . . . . .  N  NUMB  00010000H A   
XDATALEN . . . . . . . . . . . . . .  N  NUMB  0000H     A   
XDATASTART . . . . . . . . . . . . .  N  NUMB  0000H     A   


REGISTER BANK(S) USED: 0 


ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S).
