?? startup.lst
字號:
A51 MACRO ASSEMBLER STARTUP 10/09/2006 14:14:48 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN STARTUP.OBJ
ASSEMBLER INVOKED BY: C:\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 10/09/2006 14:14:48 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
78
79 NAME ?C_STARTUP
80
81
82 ?C_C51STARTUP SEGMENT CODE
83 ?STACK SEGMENT IDATA
84
---- 85 RSEG ?STACK
0000 86 DS 1
87
88 EXTRN CODE (?C_START)
89 PUBLIC ?C_STARTUP
90
---- 91 CSEG AT 0
0000 020000 F 92 ?C_STARTUP: LJMP STARTUP1
93
---- 94 RSEG ?C_C51STARTUP
95
0000 96 STARTUP1:
97 ;在這里插入串行口初始化代碼
2580 98 BaudRate EQU 9600 ;定義波特率(晶振11.0592MHz)
0087 99 PCON DATA 0x87
0089 100 TMOD DATA 0x89
008B 101 TL1 DATA 0x8B
008D 102 TH1 DATA 0x8D
008E 103 TR1 BIT 0x8E
0098 104 SCON DATA 0x98
0000 759852 105 MOV SCON, #0x52 ;串口方式1(8位UART),允許接收,置位TI
0003 438780 106 ORL PCON, #0x80 ;波特率加倍
0006 53890F 107 ANL TMOD, #0x0F ;設置T1為8位自動重裝定時器,用于產生波特率
0009 438920 108 ORL TMOD, #0x20
000C 758BFA 109 MOV TL1, #(256-57600/BaudRate) ;根據(jù)波特率設置T1初值
000F 858B8D 110 MOV TH1, TL1
0012 D28E 111 SETB TR1
112
113 IF IDATALEN <> 0
0014 787F 114 MOV R0,#IDATALEN - 1
0016 E4 115 CLR A
0017 F6 116 IDATALOOP: MOV @R0,A
0018 D8FD 117 DJNZ R0,IDATALOOP
118 ENDIF
119
120 IF XDATALEN <> 0
MOV DPTR,#XDATASTART
MOV R7,#LOW (XDATALEN)
IF (LOW (XDATALEN)) <> 0
MOV R6,#(HIGH (XDATALEN)) +1
A51 MACRO ASSEMBLER STARTUP 10/09/2006 14:14:48 PAGE 3
ELSE
MOV R6,#HIGH (XDATALEN)
ENDIF
CLR A
XDATALOOP: MOVX @DPTR,A
INC DPTR
DJNZ R7,XDATALOOP
DJNZ R6,XDATALOOP
ENDIF
134
135 IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
138
139 IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
147
148 IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
153
154 IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
160
161 IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
165
001A 758100 F 166 MOV SP,#?STACK-1
167 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
168 ; EXTRN CODE (?B_SWITCH0)
169 ; CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
001D 020000 F 170 LJMP ?C_START
171
172 END
A51 MACRO ASSEMBLER STARTUP 10/09/2006 14:14:48 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_C51STARTUP. . . C SEG 0020H 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
BAUDRATE . . . . . N NUMB 2580H 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 0017H R SEG=?C_C51STARTUP
PBPSTACK . . . . . N NUMB 0000H A
PBPSTACKTOP. . . . N NUMB 0000H A
PCON . . . . . . . D ADDR 0087H 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
SCON . . . . . . . D ADDR 0098H A
SP . . . . . . . . D ADDR 0081H A
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
TH1. . . . . . . . D ADDR 008DH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
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 + -