]> git.llucax.com Git - z.facultad/66.09/etherled.git/blobdiff - pruebas/keil/red_test_anda/STARTUP.A51
Arregla de _verdad_ los fines de lĂ­nea =)
[z.facultad/66.09/etherled.git] / pruebas / keil / red_test_anda / STARTUP.A51
index 8f652d22bbbad669b21b1360c22435805b95b1b5..d9a8780ff93a4c4d51bc1bc0c0f59ccb41c9f283 100644 (file)
-$NOMOD51\r
-;------------------------------------------------------------------------------\r
-;  This file is part of the C51 Compiler package\r
-;  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.\r
-;------------------------------------------------------------------------------\r
-;  STARTUP.A51:  This code is executed after processor reset.\r
-;\r
-;  To translate this file use A51 with the following invocation:\r
-;\r
-;     A51 STARTUP.A51\r
-;\r
-;  To link the modified STARTUP.OBJ file to your application use the following\r
-;  BL51 invocation:\r
-;\r
-;     BL51 <your object file list>, STARTUP.OBJ <controls>\r
-;\r
-;------------------------------------------------------------------------------\r
-;\r
-;  User-defined Power-On Initialization of Memory\r
-;\r
-;  With the following EQU statements the initialization of memory\r
-;  at processor reset can be defined:\r
-;\r
-;               ; the absolute start-address of IDATA memory is always 0\r
-IDATALEN        EQU     80H     ; the length of IDATA memory in bytes.\r
-;\r
-XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory\r
-XDATALEN        EQU     400H    ; the length of XDATA memory in bytes.\r
-;\r
-PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory\r
-PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.\r
-;\r
-;  Notes:  The IDATA space overlaps physically the DATA and BIT areas of the\r
-;          8051 CPU. At minimum the memory space occupied from the C51 \r
-;          run-time routines must be set to zero.\r
-;------------------------------------------------------------------------------\r
-;\r
-;  Reentrant Stack Initilization\r
-;\r
-;  The following EQU statements define the stack pointer for reentrant\r
-;  functions and initialized it:\r
-;\r
-;  Stack Space for reentrant functions in the SMALL model.\r
-IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.\r
-IBPSTACKTOP     EQU     0FFH+1  ; set top of stack to highest location+1.\r
-;\r
-;  Stack Space for reentrant functions in the LARGE model.      \r
-XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.\r
-XBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.\r
-;\r
-;  Stack Space for reentrant functions in the COMPACT model.    \r
-PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.\r
-PBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.\r
-;\r
-;------------------------------------------------------------------------------\r
-;\r
-;  Page Definition for Using the Compact Model with 64 KByte xdata RAM\r
-;\r
-;  The following EQU statements define the xdata page used for pdata\r
-;  variables. The EQU PPAGE must conform with the PPAGE control used\r
-;  in the linker invocation.\r
-;\r
-PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.\r
-;\r
-PPAGE           EQU     0       ; define PPAGE number.\r
-;\r
-PPAGE_SFR       DATA    0A0H    ; SFR that supplies uppermost address byte\r
-;               (most 8051 variants use P2 as uppermost address byte)\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
-; Standard SFR Symbols \r
-ACC     DATA    0E0H\r
-B       DATA    0F0H\r
-SP      DATA    81H\r
-DPL     DATA    82H\r
-DPH     DATA    83H\r
-\r
-                NAME    ?C_STARTUP\r
-\r
-\r
-?C_C51STARTUP   SEGMENT   CODE\r
-?STACK          SEGMENT   IDATA\r
-\r
-                RSEG    ?STACK\r
-                DS      1\r
-\r
-                EXTRN CODE (?C_START)\r
-                PUBLIC  ?C_STARTUP\r
-\r
-                CSEG    AT      0\r
-?C_STARTUP:     LJMP    STARTUP1\r
-\r
-                RSEG    ?C_C51STARTUP\r
-\r
-STARTUP1:\r
-\r
-IF IDATALEN <> 0\r
-                MOV     R0,#IDATALEN - 1\r
-                CLR     A\r
-IDATALOOP:      MOV     @R0,A\r
-                DJNZ    R0,IDATALOOP\r
-ENDIF\r
-\r
-IF XDATALEN <> 0\r
-                MOV     DPTR,#XDATASTART\r
-                MOV     R7,#LOW (XDATALEN)\r
-  IF (LOW (XDATALEN)) <> 0\r
-                MOV     R6,#(HIGH (XDATALEN)) +1\r
-  ELSE\r
-                MOV     R6,#HIGH (XDATALEN)\r
-  ENDIF\r
-                CLR     A\r
-XDATALOOP:      MOVX    @DPTR,A\r
-                INC     DPTR\r
-                DJNZ    R7,XDATALOOP\r
-                DJNZ    R6,XDATALOOP\r
-ENDIF\r
-\r
-IF PPAGEENABLE <> 0\r
-                MOV     PPAGE_SFR,#PPAGE\r
-ENDIF\r
-\r
-IF PDATALEN <> 0\r
-                MOV     R0,#LOW (PDATASTART)\r
-                MOV     R7,#LOW (PDATALEN)\r
-                CLR     A\r
-PDATALOOP:      MOVX    @R0,A\r
-                INC     R0\r
-                DJNZ    R7,PDATALOOP\r
-ENDIF\r
-\r
-IF IBPSTACK <> 0\r
-EXTRN DATA (?C_IBP)\r
-\r
-                MOV     ?C_IBP,#LOW IBPSTACKTOP\r
-ENDIF\r
-\r
-IF XBPSTACK <> 0\r
-EXTRN DATA (?C_XBP)\r
-\r
-                MOV     ?C_XBP,#HIGH XBPSTACKTOP\r
-                MOV     ?C_XBP+1,#LOW XBPSTACKTOP\r
-ENDIF\r
-\r
-IF PBPSTACK <> 0\r
-EXTRN DATA (?C_PBP)\r
-                MOV     ?C_PBP,#LOW PBPSTACKTOP\r
-ENDIF\r
-\r
-                MOV     SP,#?STACK-1\r
-; This code is required if you use L51_BANK.A51 with Banking Mode 4\r
-; EXTRN CODE (?B_SWITCH0)\r
-;               CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0\r
-                LJMP    ?C_START\r
-\r
-                END\r
+$NOMOD51
+;------------------------------------------------------------------------------
+;  This file is part of the C51 Compiler package
+;  Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
+;------------------------------------------------------------------------------
+;  STARTUP.A51:  This code is executed after processor reset.
+;
+;  To translate this file use A51 with the following invocation:
+;
+;     A51 STARTUP.A51
+;
+;  To link the modified STARTUP.OBJ file to your application use the following
+;  BL51 invocation:
+;
+;     BL51 <your object file list>, STARTUP.OBJ <controls>
+;
+;------------------------------------------------------------------------------
+;
+;  User-defined Power-On Initialization of Memory
+;
+;  With the following EQU statements the initialization of memory
+;  at processor reset can be defined:
+;
+;               ; the absolute start-address of IDATA memory is always 0
+IDATALEN        EQU     80H     ; the length of IDATA memory in bytes.
+;
+XDATASTART      EQU     0H      ; the absolute start-address of XDATA memory
+XDATALEN        EQU     400H    ; the length of XDATA memory in bytes.
+;
+PDATASTART      EQU     0H      ; the absolute start-address of PDATA memory
+PDATALEN        EQU     0H      ; the length of PDATA memory in bytes.
+;
+;  Notes:  The IDATA space overlaps physically the DATA and BIT areas of the
+;          8051 CPU. At minimum the memory space occupied from the C51 
+;          run-time routines must be set to zero.
+;------------------------------------------------------------------------------
+;
+;  Reentrant Stack Initilization
+;
+;  The following EQU statements define the stack pointer for reentrant
+;  functions and initialized it:
+;
+;  Stack Space for reentrant functions in the SMALL model.
+IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.
+IBPSTACKTOP     EQU     0FFH+1  ; set top of stack to highest location+1.
+;
+;  Stack Space for reentrant functions in the LARGE model.      
+XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.
+XBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.
+;
+;  Stack Space for reentrant functions in the COMPACT model.    
+PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.
+PBPSTACKTOP     EQU     0FFFFH+1; set top of stack to highest location+1.
+;
+;------------------------------------------------------------------------------
+;
+;  Page Definition for Using the Compact Model with 64 KByte xdata RAM
+;
+;  The following EQU statements define the xdata page used for pdata
+;  variables. The EQU PPAGE must conform with the PPAGE control used
+;  in the linker invocation.
+;
+PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.
+;
+PPAGE           EQU     0       ; define PPAGE number.
+;
+PPAGE_SFR       DATA    0A0H    ; SFR that supplies uppermost address byte
+;               (most 8051 variants use P2 as uppermost address byte)
+;
+;------------------------------------------------------------------------------
+
+; Standard SFR Symbols 
+ACC     DATA    0E0H
+B       DATA    0F0H
+SP      DATA    81H
+DPL     DATA    82H
+DPH     DATA    83H
+
+                NAME    ?C_STARTUP
+
+
+?C_C51STARTUP   SEGMENT   CODE
+?STACK          SEGMENT   IDATA
+
+                RSEG    ?STACK
+                DS      1
+
+                EXTRN CODE (?C_START)
+                PUBLIC  ?C_STARTUP
+
+                CSEG    AT      0
+?C_STARTUP:     LJMP    STARTUP1
+
+                RSEG    ?C_C51STARTUP
+
+STARTUP1:
+
+IF IDATALEN <> 0
+                MOV     R0,#IDATALEN - 1
+                CLR     A
+IDATALOOP:      MOV     @R0,A
+                DJNZ    R0,IDATALOOP
+ENDIF
+
+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
+
+IF PPAGEENABLE <> 0
+                MOV     PPAGE_SFR,#PPAGE
+ENDIF
+
+IF PDATALEN <> 0
+                MOV     R0,#LOW (PDATASTART)
+                MOV     R7,#LOW (PDATALEN)
+                CLR     A
+PDATALOOP:      MOVX    @R0,A
+                INC     R0
+                DJNZ    R7,PDATALOOP
+ENDIF
+
+IF IBPSTACK <> 0
+EXTRN DATA (?C_IBP)
+
+                MOV     ?C_IBP,#LOW IBPSTACKTOP
+ENDIF
+
+IF XBPSTACK <> 0
+EXTRN DATA (?C_XBP)
+
+                MOV     ?C_XBP,#HIGH XBPSTACKTOP
+                MOV     ?C_XBP+1,#LOW XBPSTACKTOP
+ENDIF
+
+IF PBPSTACK <> 0
+EXTRN DATA (?C_PBP)
+                MOV     ?C_PBP,#LOW PBPSTACKTOP
+ENDIF
+
+                MOV     SP,#?STACK-1
+; This code is required if you use L51_BANK.A51 with Banking Mode 4
+; EXTRN CODE (?B_SWITCH0)
+;               CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
+                LJMP    ?C_START
+
+                END