📄 startu32.lst
字号:
A51 MACRO ASSEMBLER STARTU32 10/13/2004 10:12:17 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN .\Startu32.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ..\..\..\每天工作文件备份\8500E\hd8200e10.12\Startu32.a51 SET(SMALL) DEBUG
PRINT(.\Startu32.lst) OBJECT(.\Startu32.obj) EP
LOC OBJ LINE SOURCE
1 $nomod51
2 ;------------------------------------------------------------------------------
3 ; STARTU32.A51: This code is executed after processor reset.
4 ;
5 ; Modified for uPSD Startup:
6 ; - Disable Watchdog timer - enable at beginning of user application
7 ; - Settup various IP prescalers to large values (lowers power requirements)
8 ; The IP device drivers wil need to initialize the prescaler to the right value
9 ;
10 ;------------------------------------------------------------------------------
11
12
13 ; User-defined Power-On Initialization of Memory (Clear Memory)
14 ;
15 ; With the following EQU statements the initialization of memory
16 ; at processor reset can be defined:
17
18 ; ; the absolute start-address of IDATA memory is always 0
0100 19 IDATALEN EQU 100H ; the length of IDATA memory in bytes.
20
21 ; *** NOTE: uPSD users need to fill in the following based on where SRAM memory mapped.
22
2000 23 XDATASTART EQU 2000H ; the absolute start-address of XDATA memory
1FFF 24 XDATALEN EQU 1FFFH ; the length of XDATA memory in bytes.
25
0000 26 PDATASTART EQU 0H ; the absolute start-address of PDATA memory
0000 27 PDATALEN EQU 0H ; the length of PDATA memory in bytes.
28
29 ; Notes: The IDATA space overlaps physically the DATA and BIT areas of the
30 ; 8051 CPU. At minimum the memory space occupied from the C51
31 ; run-time routines must be set to zero.
32
33
34 ;------------------------------------------------------------------------------
35 ;
36 ; Reentrant Stack Initilization
37 ;
38 ; The following EQU statements define the stack pointer for reentrant
39 ; functions and initialized it:
40 ;
41 ; Stack Space for reentrant functions in the SMALL model.
0000 42 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
0100 43 IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.
44 ;
45 ; Stack Space for reentrant functions in the LARGE model.
0000 46 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
0000 47 XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
48 ;
49 ; Stack Space for reentrant functions in the COMPACT model.
0000 50 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
0000 51 PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.
52 ;
53 ;------------------------------------------------------------------------------
54 ;
55 ; Page Definition for Using the Compact Model with 64 KByte xdata RAM
56 ;
57 ; The following EQU statements define the xdata page used for pdata
A51 MACRO ASSEMBLER STARTU32 10/13/2004 10:12:17 PAGE 2
58 ; variables. The EQU PPAGE must conform with the PPAGE control used
59 ; in the linker invocation.
60 ;
0000 61 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
62 ;
0000 63 PPAGE EQU 0 ; define PPAGE number.
64 ;
00A0 65 PPAGE_SFR DATA 0A0H ; SFR that supplies uppermost address byte
66 ; (most 8051 variants use P2 as uppermost address byte)
67 ;
68 ;------------------------------------------------------------------------------
69
70 ; Standard SFR Symbols
00E0 71 ACC DATA 0E0H
00F0 72 B DATA 0F0H
0081 73 SP DATA 81H
0082 74 DPL DATA 82H
0083 75 DPH DATA 83H
00AE 76 WDKEY DATA 0AEH
0095 77 ASCL DATA 095H
00B1 78 PSCL0L DATA 0B1H
00B2 79 PSCL0H DATA 0B2H
00B3 80 PSCL1L DATA 0B3H
00B4 81 PSCL1H DATA 0B4H
00E1 82 USCL DATA 0E1H
00D7 83 DDCCON DATA 0D7H
00D8 84 S1CON DATA 0D8H
85
86 NAME ?C_STARTUP
87
88
89 ?C_C51STARTUP SEGMENT CODE
90 ?STACK SEGMENT IDATA
91
---- 92 RSEG ?STACK
0000 93 DS 1
94
95 EXTRN CODE (?C_START)
96 PUBLIC ?C_STARTUP
97
---- 98 CSEG AT 0
0000 020000 F 99 ?C_STARTUP: LJMP STARTUP1
100
---- 101 RSEG ?C_C51STARTUP
102
0000 103 STARTUP1:
104
105 ; uPSD specific initialization
106
0000 74FE 107 MOV A, #0FEH ; Load pre-scalars with large value
0002 F595 108 MOV ASCL, A ; Slow down ADC Logic
0004 F5B1 109 MOV PSCL0L, A ; Slow down PWM Logic
0006 F5B2 110 MOV PSCL0H, A
0008 F5B3 111 MOV PSCL1L, A
000A F5B4 112 MOV PSCL1H, A
000C F5E1 113 MOV USCL, A ; Slow down USB Logic
114
000E 7455 115 MOV A, #055H ; Disable Watch Dog Reset
0010 F5AE 116 MOV WDKEY, A
117
0012 E500 118 MOV A, 0 ; Disable DDC and DDC XRAM out of addr space
0014 F5D7 119 MOV DDCCON, A
0016 F5D8 120 MOV S1CON, A ; Disable DDC I2C as well
121
122
123 IF IDATALEN <> 0
A51 MACRO ASSEMBLER STARTU32 10/13/2004 10:12:17 PAGE 3
0018 78FF 124 MOV R0,#IDATALEN - 1
001A E4 125 CLR A
001B F6 126 IDATALOOP: MOV @R0,A
001C D8FD 127 DJNZ R0,IDATALOOP
128 ENDIF
129
130 IF XDATALEN <> 0
001E 902000 131 MOV DPTR,#XDATASTART
0021 7FFF 132 MOV R7,#LOW (XDATALEN)
133 IF (LOW (XDATALEN)) <> 0
0023 7E20 134 MOV R6,#(HIGH (XDATALEN)) +1
135 ELSE
MOV R6,#HIGH (XDATALEN)
ENDIF
0025 F0 138 XDATALOOP: MOVX @DPTR,A
0026 E4 139 CLR A
0027 A3 140 INC DPTR
0028 DFFB 141 DJNZ R7,XDATALOOP
002A DEF9 142 DJNZ R6,XDATALOOP
143 ENDIF
144
145 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
148
149 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
157
158 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
163
164 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
170
171 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
175
002C 758100 F 176 MOV SP,#?STACK-1
177 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
178 ; EXTRN CODE (?B_SWITCH0)
179 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
002F 020000 F 180 LJMP ?C_START
181
182 END
A51 MACRO ASSEMBLER STARTU32 10/13/2004 10:12:17 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0032H REL=UNIT
?C_START . . . . . C ADDR ----- EXT
?C_STARTUP . . . . C ADDR 0000H A
?STACK . . . . . . I SEG 0001H REL=UNIT
ACC. . . . . . . . D ADDR 00E0H A
ASCL . . . . . . . D ADDR 0095H A
B. . . . . . . . . D ADDR 00F0H A
DDCCON . . . . . . D ADDR 00D7H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
IBPSTACK . . . . . N NUMB 0000H A
IBPSTACKTOP. . . . N NUMB 0100H A
IDATALEN . . . . . N NUMB 0100H A
IDATALOOP. . . . . C ADDR 001BH R SEG=?C_C51STARTUP
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0000H 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
PSCL0H . . . . . . D ADDR 00B2H A
PSCL0L . . . . . . D ADDR 00B1H A
PSCL1H . . . . . . D ADDR 00B4H A
PSCL1L . . . . . . D ADDR 00B3H A
S1CON. . . . . . . D ADDR 00D8H A
SP . . . . . . . . D ADDR 0081H A
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
USCL . . . . . . . D ADDR 00E1H A
WDKEY. . . . . . . D ADDR 00AEH A
XBPSTACK . . . . . N NUMB 0000H A
XBPSTACKTOP. . . . N NUMB 0000H A
XDATALEN . . . . . N NUMB 1FFFH A
XDATALOOP. . . . . C ADDR 0025H R SEG=?C_C51STARTUP
XDATASTART . . . . N NUMB 2000H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -