📄 startup400.lst
字号:
00A8.2 +1 219 sbit EX1 = IE^2;
00A8.1 +1 220 sbit ET0 = IE^1;
00A8.0 +1 221 sbit EX0 = IE^0;
+1 222
00B8.6 +1 223 sbit PS1 = IP^6;
00B8.5 +1 224 sbit PT2 = IP^5;
00B8.4 +1 225 sbit PS0 = IP^4;
00B8.3 +1 226 sbit PT1 = IP^3;
00B8.2 +1 227 sbit PX1 = IP^2;
00B8.1 +1 228 sbit PT0 = IP^1;
00B8.0 +1 229 sbit PX0 = IP^0;
+1 230
0098.7 +1 231 sbit SM0 = SCON0^7; /* Alternate SM0_FE_0 */
0098.6 +1 232 sbit SM1 = SCON0^6; /* Alternate SM1_0 */
0098.5 +1 233 sbit SM2 = SCON0^5; /* Alternate SM2_0 */
0098.4 +1 234 sbit REN = SCON0^4; /* Alternate REN_0 */
0098.3 +1 235 sbit TB8 = SCON0^3; /* Alternate TB8_0 */
0098.2 +1 236 sbit RB8 = SCON0^2; /* Alternate RB8_0 */
0098.1 +1 237 sbit TI = SCON0^1; /* Alternate TI_0 */
0098.0 +1 238 sbit RI = SCON0^0; /* Alternate RI_0 */
+1 239
00C0.7 +1 240 sbit SM01 = SCON1^7; /* Alternate SM0_FE_1 */
00C0.6 +1 241 sbit SM11 = SCON1^6; /* Alternate SM1_1 */
00C0.5 +1 242 sbit SM21 = SCON1^5; /* Alternate SM2_1 */
00C0.4 +1 243 sbit REN1 = SCON1^4; /* Alternate REN_1 */
00C0.3 +1 244 sbit TB81 = SCON1^3; /* Alternate TB8_1 */
00C0.2 +1 245 sbit RB81 = SCON1^2; /* Alternate RB8_1 */
00C0.1 +1 246 sbit TI1 = SCON1^1; /* Alternate TI_1 */
00C0.0 +1 247 sbit RI1 = SCON1^0; /* Alternate RI_1 */
+1 248
00C8.7 +1 249 sbit TF2 = T2CON^7;
00C8.6 +1 250 sbit EXF2 = T2CON^6;
00C8.5 +1 251 sbit RCLK = T2CON^5;
00C8.4 +1 252 sbit TCLK = T2CON^4;
00C8.3 +1 253 sbit EXEN2 = T2CON^3;
00C8.2 +1 254 sbit TR2 = T2CON^2;
00C8.1 +1 255 sbit C_T2 = T2CON^1;
00C8.0 +1 256 sbit CP_RL2= T2CON^0;
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 5
+1 257
00D8.7 +1 258 sbit SMOD_1= WDCON^7;
00D8.6 +1 259 sbit POR = WDCON^6;
00D8.5 +1 260 sbit EPF1 = WDCON^5;
00D8.4 +1 261 sbit PF1 = WDCON^4;
00D8.3 +1 262 sbit WDIF = WDCON^3;
00D8.2 +1 263 sbit WTRF = WDCON^2;
00D8.1 +1 264 sbit EWT = WDCON^1;
00D8.0 +1 265 sbit RWT = WDCON^0;
+1 266
+1 267
00E8.7 +1 268 sbit EPMIE = EIE^7;
00E8.6 +1 269 sbit C0IE = EIE^6;
+1 270
00E8.5 +1 271 sbit EAIE = EIE^5;
00E8.4 +1 272 sbit EWDI = EIE^4;
+1 273
00E8.3 +1 274 sbit EWPI = EIE^3;
+1 275
00E8.2 +1 276 sbit ES2 = EIE^2;
+1 277
00E8.1 +1 278 sbit ET3 = EIE^1;
+1 279
00E8.0 +1 280 sbit EX25 = EIE^0;
+1 281
+1 282
00F8.7 +1 283 sbit EPMIP = EIP^7;
00F8.6 +1 284 sbit C0IP = EIP^6;
00F8.5 +1 285 sbit EAIP = EIP^5;
00F8.4 +1 286 sbit PWDI = EIP^4;
00F8.3 +1 287 sbit PWPI = EIP^3; /* Alternate PC3 */
00F8.2 +1 288 sbit PS2 = EIP^2; /* Alternate PC2 */
00F8.1 +1 289 sbit PT3 = EIP^1; /* Alternate PC1 */
00F8.0 +1 290 sbit PX2_5 = EIP^0; /* Alternate PC0 */
+1 291
+1 292
293
294 EXTERN ECODE(init_romexport)
295
296 ;****************************************************************************
297 ;
298 ; BEGIN CONFIGURABLE OPTIONS
299 ;
300 ; Set USE_MONITOR to 0 to configure this program to load into bank 40 (flash on TINIm400
)
301 ; Set USE_MONITOR to 1 to configure this program to load into bank 20 (RAM on TINIm400)
302 ; where it is suitable for use by the Keil monitor.
303 ;
304 $set (USE_MONITOR = 0)
305
306 ;
307 ; Set XTALMULT to 2 or 4 to use the crystal doubler or quadrupler.
308 ; Set XTALMULT to 1 to use the default. Do not use other
309 ; values for XTALMULT.
310 ;
311 $set (XTALMULT = 4)
312
313 ;
314 ; Set the OSCILLATOR_FREQ value to the value of the oscillator you are using.
315 ; The TINIm400 uses a 14745600 Hz oscillator. DO NOT CHANGE THIS VALUE TO
316 ; REFLECT THE USE OF THE CRYSTAL MULTIPLIER.
317 ;
01194000 318 OSCILLATOR_FREQ equ 18432000
319 ;OSCILLATOR_FREQ equ 14745600
320 ;
321 ; Set SERIAL0_BAUDRATE to the baud rate you want to get standard output at.
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 6
322 ; Default is 115200.
323 ;
0001C200 324 SERIAL0_BAUDRATE equ 115200
325
326
327 ;
328 ; Set USE_REENTRANT_STACK to 1 to use Keil's reentrant stack (allows
329 ; recursive function calls and for multiple processes to call a single
330 ; function simultaneously). 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 ;
342 $set (SETMAC = 0)
343
0000 344 MAC_MSB equ 00h
0060 345 MAC_5 equ 60h
0062 346 MAC_4 equ 62h
0063 347 MAC_3 equ 63h
0064 348 MAC_2 equ 64h
0065 349 MAC_1 equ 65h
0067 350 MAC_LSB equ 67h
351
352 ;
353 ; Change ERASE_IDATA to erase the internal data memory before the program begins.
354 ;
0000 355 ERASE_IDATA equ 0h ; the amount of IDATA memory to erase
356
357 ;
358 ; Change length from 0 to erase starting at address ERASE_XDATA_ADDR for
359 ; ERASE_XDATA_LEN bytes.
360 ;
0000 361 ERASE_XDATA_ADDR equ 0h ; the absolute start-address of XDATA memory
0000 362 ERASE_XDATA_LEN equ 0h ; the length of XDATA memory in bytes.
363
364 ;
365 ; END OF CONFIGURABLE OPTIONS
366 ;
367 ;****************************************************************************
FFFB 368 TIMER_RELOAD equ (65536 - ((OSCILLATOR_FREQ) / (32 * SERIAL0_BAUDRATE)))
369
370
371 $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
381
382
383 name ?C_STARTUP
384 ;
385 ; Make sure the compiler does not use the OS flags & bits
386 ;
000008 387 DSEG at 08h
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 7
000008 388 regbank123: ds 24
389
000020 390 DSEG AT 20h
000020 391 wos_flags: ds 1
392
000027 393 DSEG AT 27h
000027 394 rom_flags: ds 1
395
000068 396 DSEG AT 68h
000068 397 wos_crit_count: ds 1
398
00006B 399 DSEG AT 6Bh
00006B 400 sched_reload: ds 2
00006D 401 curr_pc: ds 3
402
000072 403 DSEG AT 72h
000072 404 sched: ds 3
000075 405 ms_count: ds 5
406
00007B 407 DSEG AT 7Bh
00007B 408 hb_chandle: ds 5
409
410
411 extrn code (?C_START)
412 public ?C_STARTUP
413
414 $if (USE_MONITOR = 0)
060000 415 ?C_CPURESET?0 segment code at 060000H
416 $endif
417 $if (USE_MONITOR = 1)
?C_CPURESET?0 segment code at 80000H
$endif
420
------ 421 rseg ?C_CPURESET?0
060000 8005 422 ?C_STARTUP: sjmp past_loader_tag
060002 54494E49 423 db 'TINI' ; Tag for TINI Environment 1.
02c
424 ; db 'secd' ; or later (ignored in 1.02b)
060006 06 425 db byte2(?C_STARTUP) ; Target bank
060007 426 past_loader_tag:
060007 C2AF 427 clr ea ; No interrupts, please
428
429 ;
430 ; Make sure we are in contiguous mode
431 ;
060009 75C7AA 432 mov ta, #0xAA ; Enable access to ACON
06000C 75C755 433 mov ta, #0x55
06000F 439D02 434 orl acon, #2 ; 24 bit mode
060012 02000000 F 435 ljmp far sanity_check ; Sanity check: Make sure 24
bit mode is on
060016 436 sanity_check:
060016 75C7AA 437 mov ta, #0xAA ; Enable access to MCON
060019 75C755 438 mov ta, #0x55
06001C 75C6AD 439 mov mcon, #0xAD ; Relocate RAM, data memory
06001F 75C7AA 440 mov ta, #0xAA ; Enable access to ACON
060022 75C755 441 mov ta, #0x55
060025 439D04 442 orl acon, #0x04 ; Extended stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -