?? startu32.lst
字號:
A51 MACRO ASSEMBLER STARTU32 04/13/2006 11:35:15 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN Startu32.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Startu32.a51 SET(LARGE) DEBUG 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
0200 23 XDATASTART EQU 0200H ; the absolute start-address of XDATA memory
7D00 24 XDATALEN EQU 7D00H ; 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
58 ; variables. The EQU PPAGE must conform with the PPAGE control used
A51 MACRO ASSEMBLER STARTU32 04/13/2006 11:35:15 PAGE 2
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 ;------------------------------------------------------------------------------
0000 69 PSD_REG_ADDR EQU 0000H
00E0 70 PAGEREG EQU PSD_REG_ADDR + 0E0H
00E2 71 VMREG EQU PSD_REG_ADDR + 0E2H
0000 72 APPLICATION_PAGE EQU 000H
0080 73 BOOTLOADER_PAGE EQU 080H
74
000A 75 KEY_LENGTH EQU 10 ;from app->bootloader,
7FF0 76 key EQU 07FF0H
77
78 ; Standard SFR Symbols
00E0 79 ACC DATA 0E0H
00F0 80 B DATA 0F0H
0081 81 SP DATA 81H
0082 82 DPL DATA 82H
0083 83 DPH DATA 83H
00AE 84 WDKEY DATA 0AEH
0095 85 ASCL DATA 095H
00B1 86 PSCL0L DATA 0B1H
00B2 87 PSCL0H DATA 0B2H
00B3 88 PSCL1L DATA 0B3H
00B4 89 PSCL1H DATA 0B4H
00E1 90 USCL DATA 0E1H
00D7 91 DDCCON DATA 0D7H
00D8 92 S1CON DATA 0D8H
93
94 NAME ?C_STARTUP
95
96
97 ?C_C51STARTUP SEGMENT CODE
98 ?STACK SEGMENT IDATA
99
---- 100 RSEG ?STACK
0000 101 DS 1
102
103 EXTRN CODE (?C_START)
104 PUBLIC ?C_STARTUP
105
---- 106 CSEG AT 0
0000 020000 F 107 ?C_STARTUP: LJMP STARTUP1
108
---- 109 RSEG ?C_C51STARTUP
110
0000 111 STARTUP1:
112
113 ; uPSD specific initialization
114
0000 74FE 115 MOV A, #0FEH ; Load pre-scalars with large value
0002 F595 116 MOV ASCL, A ; Slow down ADC Logic
0004 F5B1 117 MOV PSCL0L, A ; Slow down PWM Logic
0006 F5B2 118 MOV PSCL0H, A
0008 F5B3 119 MOV PSCL1L, A
000A F5B4 120 MOV PSCL1H, A
000C F5E1 121 MOV USCL, A ; Slow down USB Logic
122
000E 7455 123 MOV A, #055H ; Disable Watch Dog Reset
0010 F5AE 124 MOV WDKEY, A
A51 MACRO ASSEMBLER STARTU32 04/13/2006 11:35:15 PAGE 3
125
0012 E500 126 MOV A, 0 ; Disable DDC and DDC XRAM out of addr space
0014 F5D7 127 MOV DDCCON, A
0016 F5D8 128 MOV S1CON, A ; Disable DDC I2C as well
129
130
131 IF IDATALEN <> 0
0018 78FF 132 MOV R0,#IDATALEN - 1
001A E4 133 CLR A
001B F6 134 IDATALOOP: MOV @R0,A
001C D8FD 135 DJNZ R0,IDATALOOP
136 ENDIF
137
138 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
141
142 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
150
151 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
156
157 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
163
164 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
168
001E 758100 F 169 MOV SP,#?STACK-1
170 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
171 ; EXTRN CODE (?B_SWITCH0)
0021 9000E2 172 MOV DPTR, #VMREG
0024 7406 173 MOV A, #06H
0026 F0 174 MOVX @DPTR, A
175
0027 7809 176 MOV R0, #KEY_LENGTH - 1;
0029 177 CHECKBOOT: ;;;;;;;;;;7FF0--7FF9
0029 74F0 178 MOV A, #0F0H
002B 28 179 ADD A, R0
002C F582 180 MOV DPL, A
002E 747F 181 MOV A, #7FH
0030 3400 182 ADDC A, #00H
0032 F583 183 MOV DPH, A
0034 E0 184 MOVX A, @DPTR
0035 F9 185 MOV R1,A
186
0036 E8 187 MOV A,R0
0037 FA 188 MOV R2,A
0038 7478 189 MOV A,#'x'
A51 MACRO ASSEMBLER STARTU32 04/13/2006 11:35:15 PAGE 4
003A F0 190 MOVX @DPTR, A ;擦潮曄
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -