📄 startup.lst
字号:
A51 MACRO ASSEMBLER STARTUP 12/22/2006 14:56:28 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN STARTUP.OBJ
ASSEMBLER INVOKED BY: h:\Keil\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 $nomod51
2 ;------------------------------------------------------------------------------
3 ; This file is part of the C51 Compiler package
4 ; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
5 ;------------------------------------------------------------------------------
6 ; STARTUP.A51: This code is executed after processor reset.
7 ;
8 ; To translate this file use A51 with the following invocation:
9 ;
10 ; A51 STARTUP.A51
11 ;
12 ; To link the modified STARTUP.OBJ file to your application use the following
13 ; BL51 invocation:
14 ;
15 ; BL51 <your object file list>, STARTUP.OBJ <controls>
16 ;
17 ;------------------------------------------------------------------------------
18 ;
19 ; User-defined Power-On Initialization of Memory
20 ;
21 ; With the following EQU statements the initialization of memory
22 ; at processor reset can be defined:
23 ;
24 ; ; the absolute start-address of IDATA memory is always 0
0080 25 IDATALEN EQU 80H ; the length of IDATA memory in bytes.
26 ;
0000 27 XDATASTART EQU 0H ; the absolute start-address of XDATA memory
0000 28 XDATALEN EQU 0H ; the length of XDATA memory in bytes.
29 ;
0000 30 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0000 31 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
32 ;
33 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
34 ; 8051 CPU. At minimum the memory space occupied from the C51
35 ; run-time routines must be set to zero.
36 ;------------------------------------------------------------------------------
37 ;
38 ; Reentrant Stack Initilization
39 ;
40 ; The following EQU statements define the stack pointer for reentrant
41 ; functions and initialized it:
42 ;
43 ; Stack Space for reentrant functions in the SMALL model.
0000 44 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
0100 45 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
46 ;
47 ; Stack Space for reentrant functions in the LARGE model.
0000 48 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
0000 49 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
50 ;
51 ; Stack Space for reentrant functions in the COMPACT model.
0000 52 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
0000 53 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
54 ;
55 ;------------------------------------------------------------------------------
56 ;
57 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
58 ;
A51 MACRO ASSEMBLER STARTUP 12/22/2006 14:56:28 PAGE 2
59 ; The following EQU statements define the xdata page used for pdata
60 ; variables. The EQU PPAGE must conform with the PPAGE control used
61 ; in the linker invocation.
62 ;
0000 63 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
64 ;
0000 65 PPAGE EQU 0 ; define PPAGE number.
66 ;
00A0 67 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
68 ; (most 8051 variants use P2 as uppermost address byte)
69 ;
70 ;------------------------------------------------------------------------------
71
72 ; Standard SFR Symbols
00E0 73 ACC DATA 0E0H
00F0 74 B DATA 0F0H
0081 75 SP DATA 81H
0082 76 DPL DATA 82H
0083 77 DPH DATA 83H
00D9 78 PCA0MD DATA 0D9H
79
80 NAME ?C_STARTUP
81
82
83 ?C_C51STARTUP SEGMENT CODE
84 ?STACK SEGMENT IDATA
85
---- 86 RSEG ?STACK
0000 87 DS 1
88
89 EXTRN CODE (?C_START)
90 PUBLIC ?C_STARTUP
91
---- 92 CSEG AT 0
0000 020000 F 93 ?C_STARTUP: LJMP STARTUP1
94
---- 95 RSEG ?C_C51STARTUP
96
0000 97 STARTUP1:
0000 00 98 NOP
0001 00 99 NOP
0002 00 100 NOP
0003 00 101 NOP
0004 00 102 NOP
0005 00 103 NOP
0006 00 104 NOP
0007 00 105 NOP
0008 00 106 NOP
0009 00 107 NOP
000A 00 108 NOP
000B 00 109 NOP
000C 00 110 NOP
000D 00 111 NOP
000E 00 112 NOP
000F 00 113 NOP
0010 00 114 NOP
0011 00 115 NOP
0012 00 116 NOP
0013 00 117 NOP
0014 00 118 NOP
0015 00 119 NOP
0016 00 120 NOP
0017 00 121 NOP
0018 00 122 NOP
0019 00 123 NOP
001A 00 124 NOP
A51 MACRO ASSEMBLER STARTUP 12/22/2006 14:56:28 PAGE 3
001B 00 125 NOP
001C 00 126 NOP
001D 00 127 NOP
001E 00 128 NOP
001F 00 129 NOP
0020 00 130 NOP
0021 00 131 NOP
0022 00 132 NOP
0023 00 133 NOP
0024 00 134 NOP
0025 00 135 NOP
0026 00 136 NOP
0027 00 137 NOP
138 ;开机则禁止看门狗
0028 75D900 139 MOV PCA0MD, #00H
140
141 IF IDATALEN <> 0
002B 787F 142 MOV R0,#IDATALEN - 1
002D E4 143 CLR A
002E F6 144 IDATALOOP: MOV @R0,A
002F D8FD 145 DJNZ R0,IDATALOOP
146 ENDIF
147
148 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
162
163 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
166
167 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
175
176 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
181
182 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
188
189 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
A51 MACRO ASSEMBLER STARTUP 12/22/2006 14:56:28 PAGE 4
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
193
0031 758100 F 194 MOV SP,#?STACK-1
195 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
196 ; EXTRN CODE (?B_SWITCH0)
197 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
0034 020000 F 198 LJMP ?C_START
199
200 END
A51 MACRO ASSEMBLER STARTUP 12/22/2006 14:56:28 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0037H REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?STACK . . . . . . I SEG 0001H REL=UNIT
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 002EH R SEG=?C_C51STARTUP
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0000H A
PCA0MD . . . . . . D ADDR 00D9H A
PDATALEN . . . . . N NUMB 0000H A
PDATASTART . . . . N NUMB 0000H A
PPAGE. . . . . . . N NUMB 0000H A
PPAGEENABLE. . . . N NUMB 0000H A
PPAGE_SFR. . . . . D ADDR 00A0H A
SP . . . . . . . . D ADDR 0081H A
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
XBPSTACK . . . . . N NUMB 0000H A
XBPSTACKTOP. . . . N NUMB 0000H A
XDATALEN . . . . . N NUMB 0000H A
XDATASTART . . . . N NUMB 0000H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -