📄 startup.lst
字号:
HI-TECH Software PICC Macro Assembler V9.60PL3
Mon Jan 19 15:11:30 2009
1
2 ; HI-TECH C PRO for the PIC10/12/16 MCU family
V9.60PL3
3 ; Copyright (C) 1984-2008 HI-TECH Software
4
5 ; Auto-generated runtime startup code for fina
l link stage.
6
7 ;
8 ; Compiler options:
9 ;
10 ; -omtouch16pic16f883.cof -mmtouch16pic16f883.
map --runtime=default \
11 ; --summary=default --output=default mtouch16.
p1 --chip=16F883 -P \
12 ; --opt=default -g --asmlist --errformat=Error
[%n] %f; %l.%c %s \
13 ; --msgformat=Advisory[%n] %s --warnformat=War
ning [%n] %f; %l.%c %s
14 ;
15
16
17 processor 16F883
18
19 global _main,start,_exit,reset_vec
20 fnroot _main
21 psect config,class=CONFIG,delta=2
22 psect idloc,class=IDLOC,delta=2
23 psect rbss_0,class=BANK0,space=1
24 psect rbss_1,class=BANK1,space=1
25 psect rbss_2,class=BANK2,space=1
26 psect rbss_3,class=BANK3,space=1
27 psect rdata_0,class=BANK0,space=1
28 psect rdata_1,class=BANK1,space=1
29 psect rdata_2,class=BANK2,space=1
30 psect rdata_3,class=BANK3,space=1
31 psect nvram,class=BANK0,space=1
32 psect nvram_1,class=BANK1,space=1
33 psect nvram_2,class=BANK2,space=1
34 psect nvram_3,class=BANK3,space=1
35 psect nvbit_0,class=BANK0,bit,space=1
36 psect nvbit_1,class=BANK1,bit,space=1
37 psect nvbit_2,class=BANK2,bit,space=1
38 psect nvbit_3,class=BANK3,bit,space=1
39 psect temp,ovrld,class=BANK0,space=1
40 psect struct,ovrld,class=BANK0,space=1
41 psect code,class=CODE,delta=2
42 psect rbit_0,class=BANK0,bit,space=1
43 psect ptbit_0,class=BANK0,bit,space=1
44 psect rbit_1,class=BANK1,bit,space=1
45 psect rbit_2,class=BANK2,bit,space=1
46 psect rbit_3,class=BANK3,bit,space=1
47 psect strings,class=CODE,delta=2,reloc=256
48 psect pstrings,class=CODE,delta=2
49 psect powerup,class=CODE,delta=2
50 psect reset_vec,class=CODE,delta=2
51 psect maintext,class=CODE,delta=2
52 0000 C set 0
53 0000 Z set 2
54 0000 PCL set 2
55 0000 INDF set 0
56
57 psect fnautoc,class=COMMON,space=1
58 psect common,class=COMMON,space=1
59 psect fnauto0,class=BANK0,space=1
60 psect fnauto1,class=BANK1,space=1
61 psect fnauto2,class=BANK2,space=1
62 0000 STATUS equ 3
63 0000 PCLATH equ 0Ah
64
65 psect eeprom_data,class=EEDATA,delta=2,space=2
66 psect idata,class=CODE,delta=2
67 psect idata_0,class=CODE,delta=2
68 psect idata_1,class=CODE,delta=2
69 psect idata_2,class=CODE,delta=2
70 psect idata_3,class=CODE,delta=2
71 psect intcode,class=CODE,delta=2
72 psect intret,class=CODE,delta=2
73 psect intentry,class=CODE,delta=2
74 global intlevel0,intlevel1,intlevel2, intlevel
3, intlevel4, intlevel5
75 0004 intlevel0:
76 0004 intlevel1:
77 0004 intlevel2:
78 0004 intlevel3:
79 0004 intlevel4:
80 0004 intlevel5:
81 psect intsave,class=BANK0,space=1
82 psect intsave_1,class=BANK1,space=1
83 psect intsave_2,class=BANK2,space=1
84 psect intsave_3,class=BANK3,space=1
85 psect init,class=CODE,delta=2
86 psect init23,class=CODE,delta=2
87 psect text,class=CODE,delta=2
88 psect end_init,class=CODE,delta=2
89 psect clrtext,class=CODE,delta=2
90 psect float_text0,class=CODE,delta=2,size=2048
91 psect float_text1,class=CODE,delta=2,size=2048
92 psect float_text2,class=CODE,delta=2,size=2048
93 psect float_text3,class=CODE,delta=2,size=2048
94 psect float_text4,class=CODE,delta=2,size=2048
95 0000 FSR set 4
96
97 psect reset_vec
98 0000 reset_vec:
99 ; No powerup routine
100 global start
101
102 ; jump to start
103 0000 3000 movlw start >>8
104 0001 008A movwf PCLATH
105 0002 2811 goto start & 0x7FF | (reset_vec & not 0x7FF)
106
107
108
109 psect init
110 0011 start
111 0011 _exit
112
113 ;----------------------------------------------
---------------------------------
114 ; Clear (zero) uninitialized global variables
115
116 ; 32 bytes of RAM objects in bank 0 to zero
117
118 psect init
119 global __Lrbss_0
120 0011 303F movlw low(__Lrbss_0) ;load the low address in
to FSR
121 0012 0084 movwf FSR
122 0013 305F movlw low(__Lrbss_0+32) ;load the high addres
s+1 into W
123 0014 118A 202C 118A fcall clear_ram ;go and zero that range of ad
dresses
124
125 psect clrtext,class=CODE,delta=2
126 global clear_ram
127 ; Called with FSR containing the base address,
and
128 ; W with the last address+1
129 002C clear_ram:
130 002C 0064 clrwdt ;clear the watchdog before getting in
to this loop
131 002D clrloop:
132 002D 0180 clrf INDF ;clear RAM location pointed to by F
SR
133 002E 0A84 incf FSR,f ;increment pointer to next locatio
n
134 002F 0604 xorwf FSR,w ;XOR with final address
135 0030 1903 btfsc STATUS,2 ;have we reached the end yet?
136 0031 3400 retlw 0 ;all done for this bank, return
137 0032 0604 xorwf FSR,w ;XOR again to restore value
138 0033 282D goto clrloop ;go and do the next byte
139
140 ; 64 bytes of RAM objects in bank 1 to zero
141
142 psect init
143 global __Lrbss_1
144 0017 30B0 movlw low(__Lrbss_1) ;load the low address in
to FSR
145 0018 0084 movwf FSR
146 0019 30F0 movlw low(__Lrbss_1+64) ;load the high addres
s+1 into W
147 001A 118A 202C 118A fcall clear_ram ;go and zero that range of ad
dresses
148
149 ; 32 bytes of RAM objects in bank 2 to zero
150
151 psect init
152 001D 1783 bsf STATUS,7 ;select indirect bank 2/3
153 global __Lrbss_2
154 001E 3050 movlw low(__Lrbss_2) ;load the low address in
to FSR
155 001F 0084 movwf FSR
156 0020 3070 movlw low(__Lrbss_2+32) ;load the high addres
s+1 into W
157 0021 118A 202C 118A fcall clear_ram ;go and zero that range of ad
dresses
158
159 ; No RAM objects to clear in bank 3
160 ; 11 bytes of RAM objects in common bank to zer
o
161
162 psect init
163 global __Lcommon
164 0024 3073 movlw low(__Lcommon) ;load the low address in
to FSR
165 0025 0084 movwf FSR
166 0026 307E movlw low(__Lcommon+11) ;load the high addres
s+1 into W
167 0027 118A 202C 118A fcall clear_ram ;go and zero that range of ad
dresses
168
169
170 ;----------------------------------------------
---------------------------------
171 psect end_init
172 002A 118A 2834 ljmp _main
HI-TECH Software PICC Macro Assembler V9.60PL3
Symbol Table Mon Jan 19 15:11:30 2009
__Lrbss_0 003F __Lrbss_1 00B0 __Lrbss_2 0150 FSR 0004
INDF 0000 _main 0034 _exit 0011 start 0011
clear_ram 002C PCLATH 000A STATUS 0003 intlevel0 0004
intlevel1 0004 intlevel2 0004 intlevel3 0004 intlevel4 0004
intlevel5 0004 reset_vec 0000 clrloop 002D __Lcommon 0073
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -