📄 startup400.lst
字号:
0088.0 +1 211 sbit IT0 = TCON^0;
+1 212
00A8.7 +1 213 sbit EA = IE^7;
00A8.6 +1 214 sbit ES1 = IE^6;
00A8.5 +1 215 sbit ET2 = IE^5;
00A8.4 +1 216 sbit ES0 = IE^4;
00A8.3 +1 217 sbit ET1 = IE^3;
00A8.2 +1 218 sbit EX1 = IE^2;
00A8.1 +1 219 sbit ET0 = IE^1;
00A8.0 +1 220 sbit EX0 = IE^0;
+1 221
00B8.6 +1 222 sbit PS1 = IP^6;
00B8.5 +1 223 sbit PT2 = IP^5;
00B8.4 +1 224 sbit PS0 = IP^4;
00B8.3 +1 225 sbit PT1 = IP^3;
00B8.2 +1 226 sbit PX1 = IP^2;
00B8.1 +1 227 sbit PT0 = IP^1;
00B8.0 +1 228 sbit PX0 = IP^0;
+1 229
0098.7 +1 230 sbit SM0 = SCON0^7; /* Alternate SM0_FE_0 */
0098.6 +1 231 sbit SM1 = SCON0^6; /* Alternate SM1_0 */
0098.5 +1 232 sbit SM2 = SCON0^5; /* Alternate SM2_0 */
0098.4 +1 233 sbit REN = SCON0^4; /* Alternate REN_0 */
0098.3 +1 234 sbit TB8 = SCON0^3; /* Alternate TB8_0 */
0098.2 +1 235 sbit RB8 = SCON0^2; /* Alternate RB8_0 */
0098.1 +1 236 sbit TI = SCON0^1; /* Alternate TI_0 */
0098.0 +1 237 sbit RI = SCON0^0; /* Alternate RI_0 */
+1 238
00C0.7 +1 239 sbit SM01 = SCON1^7; /* Alternate SM0_FE_1 */
00C0.6 +1 240 sbit SM11 = SCON1^6; /* Alternate SM1_1 */
00C0.5 +1 241 sbit SM21 = SCON1^5; /* Alternate SM2_1 */
00C0.4 +1 242 sbit REN1 = SCON1^4; /* Alternate REN_1 */
00C0.3 +1 243 sbit TB81 = SCON1^3; /* Alternate TB8_1 */
00C0.2 +1 244 sbit RB81 = SCON1^2; /* Alternate RB8_1 */
00C0.1 +1 245 sbit TI1 = SCON1^1; /* Alternate TI_1 */
00C0.0 +1 246 sbit RI1 = SCON1^0; /* Alternate RI_1 */
+1 247
00C8.7 +1 248 sbit TF2 = T2CON^7;
00C8.6 +1 249 sbit EXF2 = T2CON^6;
00C8.5 +1 250 sbit RCLK = T2CON^5;
00C8.4 +1 251 sbit TCLK = T2CON^4;
00C8.3 +1 252 sbit EXEN2 = T2CON^3;
00C8.2 +1 253 sbit TR2 = T2CON^2;
00C8.1 +1 254 sbit C_T2 = T2CON^1;
AX51 MACRO ASSEMBLER STARTUP400 25/06/04 10:50:38 PAGE 5
00C8.0 +1 255 sbit CP_RL2= T2CON^0;
+1 256
00D8.7 +1 257 sbit SMOD_1= WDCON^7;
00D8.6 +1 258 sbit POR = WDCON^6;
00D8.5 +1 259 sbit EPF1 = WDCON^5;
00D8.4 +1 260 sbit PF1 = WDCON^4;
00D8.3 +1 261 sbit WDIF = WDCON^3;
00D8.2 +1 262 sbit WTRF = WDCON^2;
00D8.1 +1 263 sbit EWT = WDCON^1;
00D8.0 +1 264 sbit RWT = WDCON^0;
+1 265
00E8.7 +1 266 sbit CANBIE= EIE^7;
00E8.6 +1 267 sbit C0IE = EIE^6;
00E8.5 +1 268 sbit C1IE = EIE^5;
00E8.4 +1 269 sbit EWDI = EIE^4;
00E8.3 +1 270 sbit EX5 = EIE^3; /* Alternate EC3 */
00E8.2 +1 271 sbit EX4 = EIE^2; /* Alternate EC2 */
00E8.1 +1 272 sbit EX3 = EIE^1; /* Alternate EC1 */
00E8.0 +1 273 sbit EX2 = EIE^0; /* Alternate EC0 */
+1 274
00F8.7 +1 275 sbit CANBIP= EIP^7;
00F8.6 +1 276 sbit C0IP = EIP^6;
00F8.5 +1 277 sbit C1IP = EIP^5;
00F8.4 +1 278 sbit PWDI = EIP^4;
00F8.3 +1 279 sbit PX5 = EIP^3; /* Alternate PC3 */
00F8.2 +1 280 sbit PX4 = EIP^2; /* Alternate PC2 */
00F8.1 +1 281 sbit PX3 = EIP^1; /* Alternate PC1 */
00F8.0 +1 282 sbit PX2 = EIP^0; /* Alternate PC0 */
+1 283
+1 284
285
286 EXTERN ECODE(init_romexport)
287
288 ;****************************************************************************
289 ;
290 ; BEGIN CONFIGURABLE OPTIONS
291 ;
292 ; Set INITIALIZE_SERIAL0 to 0 to disable initialization of serial port 0.
293 ; Disabling serial port 0 initialization will also disable the printing of
294 ; the copyright message in init_rom(). When disabled, you must initialize
295 ; serial port 0 yourself and/or override the C putchar() function if you
296 ; want putchar(), puts(), or printf() to work.
297 ;
298 $set (INITIALIZE_SERIAL0 = 1)
299
300
301 ;
302 ; Set USE_MONITOR to 0 to configure this program to load into bank 40 (flash on TINIm400
)
303 ; Set USE_MONITOR to 1 to configure this program to load into bank 20 (RAM on TINIm400)
304 ; where it is suitable for use by the Keil monitor.
305 ;
306 $set (USE_MONITOR = 0)
307
308 ;
309 ; Set XTALMULT to 2 or 4 to use the crystal doubler or quadrupler.
310 ; Set XTALMULT to 1 to use the default. Do not use other
311 ; values for XTALMULT.
312 ;
313 $set (XTALMULT = 1)
314
315 ;
316 ; Set the OSCILLATOR_FREQ value to the value of the oscillator you are using.
317 ; The TINIm400 uses a 14745600 Hz oscillator. DO NOT CHANGE THIS VALUE TO
318 ; REFLECT THE USE OF THE CRYSTAL MULTIPLIER.
319 ;
AX51 MACRO ASSEMBLER STARTUP400 25/06/04 10:50:38 PAGE 6
00E10000 320 OSCILLATOR_FREQ equ 14745600
321
322 ;
323 ; Set SERIAL0_BAUDRATE to the baud rate you want to get standard output at.
324 ; Default is 115200.
325 ;
0001C200 326 SERIAL0_BAUDRATE equ 115200
327
328 ;
329 ; Set USE_REENTRANT_STACK to 1 to use Keil's reentrant stack (allows
330 ; recursive function calls). Set REENTRANT_STACK_TOP to the top of the
331 ; reentrant stack if USE_REENTRANT_STACK is 1.
332 ;
333 $set (USE_REENTRANT_STACK = 0)
FFFF 334 REENTRANT_STACK_TOP equ 0FFFFh
335
336 ;
337 ; Set SETMAC to 1 to give the TINI a specific MAC ID as defined by
338 ; the equates MAC_MSB, MAC_5, ..., MAC_LSB. Set SETMAC to 2 to
339 ; set registers r5:r4:r3:r2:r1:r0 to your own MAC ID (see 'User MAC Code'
340 ; below). Use a SETMAC of 0 to find the MAC in a 2502-E48.
341 ; (Note: You also have to call init_setclock() if there is no 2502-E48.)
342 ;
343 $set (SETMAC = 0)
344
0000 345 MAC_MSB equ 00h
0060 346 MAC_5 equ 60h
0062 347 MAC_4 equ 62h
0063 348 MAC_3 equ 63h
0064 349 MAC_2 equ 64h
0065 350 MAC_1 equ 65h
0067 351 MAC_LSB equ 67h
352
353 ;
354 ; Change ERASE_IDATA to erase the internal data memory before the program begins.
355 ; Do not use a value of 1 for ERASE_IDATA.
356 ;
0000 357 ERASE_IDATA equ 0h ; the amount of IDATA memory to erase
358
359 ;
360 ; Change length from 0 to erase starting at address ERASE_XDATA_ADDR for
361 ; ERASE_XDATA_LEN bytes.
362 ;
0000 363 ERASE_XDATA_ADDR equ 0h ; the absolute start-address of XDATA memory
0000 364 ERASE_XDATA_LEN equ 0h ; the length of XDATA memory in bytes.
365
366 ;
367 ; END OF CONFIGURABLE OPTIONS
368 ;
369 ;****************************************************************************
FFFC 370 TIMER_RELOAD equ (65536 - ((OSCILLATOR_FREQ) / (32 * SERIAL0_BAUDRATE)))
371
372
373 $if (USE_REENTRANT_STACK <> 0)
C_XBP_SEG SEGMENT DATA AT 070H
RSEG C_XBP_SEG
?C_XBP: DSB 2
XBPSTACKTOP equ REENTRANT_STACK_TOP + 1
Public ?C_XBP
$endif
383
384
385 name ?C_STARTUP
AX51 MACRO ASSEMBLER STARTUP400 25/06/04 10:50:38 PAGE 7
386 ;
387 ; Make sure the compiler does not use the OS flags & bits
388 ;
000008 389 DSEG at 08h
000008 390 regbank123: ds 24
391
000020 392 DSEG AT 20h
000020 393 wos_flags: ds 1
394
000027 395 DSEG AT 27h
000027 396 rom_flags: ds 1
397
000068 398 DSEG AT 68h
000068 399 wos_crit_count: ds 1
400
00006B 401 DSEG AT 6Bh
00006B 402 sched_reload: ds 2
00006D 403 curr_pc: ds 3
404
000072 405 DSEG AT 72h
000072 406 sched: ds 3
000075 407 ms_count: ds 5
408
00007B 409 DSEG AT 7Bh
00007B 410 hb_chandle: ds 5
411
412
413 extrn code (?C_START)
414 public ?C_STARTUP
415
416 $if (USE_MONITOR = 0)
400000 417 ?C_CPURESET?0 segment code at 400000H
418 $endif
419 $if (USE_MONITOR = 1)
?C_CPURESET?0 segment code at 200000H
$endif
422
------ 423 rseg ?C_CPURESET?0
400000 8005 424 ?C_STARTUP: sjmp past_loader_tag
400002 54494E49 425 db 'TINI' ; Tag for TINI Environment 1.
02c
426 ; or later (ignored in 1.02b)
400006 40 427 db byte2(?C_STARTUP) ; Target bank
400007 428 past_loader_tag:
400007 C2AF 429 clr ea ; No interrupts, please
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -