1、$NOMOD51;-; This file is part of the C51 Compiler package; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.; Version 8.01; * *;-; 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
2、 modified STARTUP.OBJ file to your application use the following; Lx51 invocation:; Lx51 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:; IDATALEN: IDATA
3、memory size ; Note: The absolute start-address of IDATA memory is always 0; The IDATA space overlaps physically the DATA and BIT areas.IDATALEN EQU 80H; XDATASTART: XDATA memory start address ; The absolute start address of XDATA memoryXDATASTART EQU 0 ; XDATALEN: XDATA memory size ; The length of X
4、DATA memory in bytes.XDATALEN EQU 0 ; PDATASTART: PDATA memory start address ; The absolute start address of PDATA memoryPDATASTART EQU 0H; PDATALEN: PDATA memory size ; The length of PDATA memory in bytes.PDATALEN EQU 0H;-; Reentrant Stack Initialization; The following EQU statements define the sta
5、ck pointer for reentrant; functions and initialized it:; Stack Space for reentrant functions in the SMALL model.; IBPSTACK: Enable SMALL model reentrant stack; Stack space for reentrant functions in the SMALL model.IBPSTACK EQU 0 ; set to 1 if small reentrant is used.; IBPSTACKTOP: End address of SM
6、ALL model stack ; Set the top of the stack to the highest location.IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 ; ; Stack Space for reentrant functions in the LARGE model. ; XBPSTACK: Enable LARGE model reentrant stack; Stack space for reentrant functions in the LARGE model.XBPSTACK EQU 0 ; set to 1 if
7、large reentrant is used.; XBPSTACKTOP: End address of LARGE model stack ; Set the top of the stack to the highest location.XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1 ; ; Stack Space for reentrant functions in the COMPACT model. ; PBPSTACK: Enable COMPACT model reentrant stack; Stack space for reen
8、trant functions in the COMPACT model.PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.; PBPSTACKTOP: End address of COMPACT model stack ; Set the top of the stack to the highest location.PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 ; ;-; Memory Page for Using the Compact Model with 64 KByte xdata
9、RAM; Compact Model Page Definition; Define the XDATA page used for PDATA variables. ; PPAGE must conform with the PPAGE set in the linker invocation.; Enable pdata memory page initalizationPPAGEENABLE EQU 0 ; set to 1 if pdata object are used.; PPAGE number ; uppermost 256-byte address of the page u
10、sed for PDATA variables.PPAGE EQU 0; SFR address which supplies uppermost address byte ; most 8051 variants use P2 as uppermost address bytePPAGE_SFR DATA 0A0H; ;-; Standard SFR Symbols ACC DATA 0E0HB DATA 0F0HSP DATA 81HDPL DATA 82HDPH DATA 83HNAME ?C_STARTUP?C_C51STARTUP SEGMENT CODE?STACK SEGMENT
11、 IDATARSEG ?STACKDS 1EXTRN CODE (?C_START)PUBLIC ?C_STARTUPCSEG AT 0?C_STARTUP: LJMP STARTUP1RSEG ?C_C51STARTUPSTARTUP1:IF IDATALEN 0MOV DPTR,#XDATASTARTMOV R7,#LOW (XDATALEN)IF (LOW (XDATALEN) 0MOV PPAGE_SFR,#PPAGEENDIFIF PDATALEN 0EXTRN DATA (?C_IBP)MOV ?C_IBP,#LOW IBPSTACKTOPENDIFIF XBPSTACK 0EXT
12、RN DATA (?C_PBP)MOV ?C_PBP,#LOW PBPSTACKTOPENDIFMOV SP,#?STACK-1; This code is required if you use L51_BANK.A51 with Banking Mode 4; Code Banking; Select Bank 0 for L51_BANK.A51 Mode 4#if 0 ; 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;LJMP ?C_STARTEND