X-Git-Url: https://git.llucax.com/z.facultad/66.09/etherled.git/blobdiff_plain/ca036973ef004eca07cab8dc80695837336dadfc..00de74f68f93e0769e6ec23525118f10fee9be6f:/pruebas/keil/red_test_anda/STARTUP.A51 diff --git a/pruebas/keil/red_test_anda/STARTUP.A51 b/pruebas/keil/red_test_anda/STARTUP.A51 index 8f652d2..d9a8780 100644 --- a/pruebas/keil/red_test_anda/STARTUP.A51 +++ b/pruebas/keil/red_test_anda/STARTUP.A51 @@ -1,157 +1,157 @@ -$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 , STARTUP.OBJ -; -;------------------------------------------------------------------------------ -; -; 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 +$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 , STARTUP.OBJ +; +;------------------------------------------------------------------------------ +; +; 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