📄 startup400.lst
字号:
0088.1 +1 213 sbit IE0 = TCON^1;
0088.0 +1 214 sbit IT0 = TCON^0;
+1 215
00A8.7 +1 216 sbit EA = IE^7;
00A8.6 +1 217 sbit ES1 = IE^6;
00A8.5 +1 218 sbit ET2 = IE^5;
00A8.4 +1 219 sbit ES0 = IE^4;
00A8.3 +1 220 sbit ET1 = IE^3;
00A8.2 +1 221 sbit EX1 = IE^2;
00A8.1 +1 222 sbit ET0 = IE^1;
00A8.0 +1 223 sbit EX0 = IE^0;
+1 224
00B8.6 +1 225 sbit PS1 = IP^6;
00B8.5 +1 226 sbit PT2 = IP^5;
00B8.4 +1 227 sbit PS0 = IP^4;
00B8.3 +1 228 sbit PT1 = IP^3;
00B8.2 +1 229 sbit PX1 = IP^2;
00B8.1 +1 230 sbit PT0 = IP^1;
00B8.0 +1 231 sbit PX0 = IP^0;
+1 232
0098.7 +1 233 sbit SM0 = SCON0^7; /* Alternate SM0_FE_0 */
0098.6 +1 234 sbit SM1 = SCON0^6; /* Alternate SM1_0 */
0098.5 +1 235 sbit SM2 = SCON0^5; /* Alternate SM2_0 */
0098.4 +1 236 sbit REN = SCON0^4; /* Alternate REN_0 */
0098.3 +1 237 sbit TB8 = SCON0^3; /* Alternate TB8_0 */
0098.2 +1 238 sbit RB8 = SCON0^2; /* Alternate RB8_0 */
0098.1 +1 239 sbit TI = SCON0^1; /* Alternate TI_0 */
0098.0 +1 240 sbit RI = SCON0^0; /* Alternate RI_0 */
+1 241
00C0.7 +1 242 sbit SM01 = SCON1^7; /* Alternate SM0_FE_1 */
00C0.6 +1 243 sbit SM11 = SCON1^6; /* Alternate SM1_1 */
00C0.5 +1 244 sbit SM21 = SCON1^5; /* Alternate SM2_1 */
00C0.4 +1 245 sbit REN1 = SCON1^4; /* Alternate REN_1 */
00C0.3 +1 246 sbit TB81 = SCON1^3; /* Alternate TB8_1 */
00C0.2 +1 247 sbit RB81 = SCON1^2; /* Alternate RB8_1 */
00C0.1 +1 248 sbit TI1 = SCON1^1; /* Alternate TI_1 */
00C0.0 +1 249 sbit RI1 = SCON1^0; /* Alternate RI_1 */
+1 250
00C8.7 +1 251 sbit TF2 = T2CON^7;
00C8.6 +1 252 sbit EXF2 = T2CON^6;
00C8.5 +1 253 sbit RCLK = T2CON^5;
00C8.4 +1 254 sbit TCLK = T2CON^4;
00C8.3 +1 255 sbit EXEN2 = T2CON^3;
00C8.2 +1 256 sbit TR2 = T2CON^2;
AX51 MACRO ASSEMBLER STARTUP400 04/04/06 14:47:23 PAGE 5
00C8.1 +1 257 sbit C_T2 = T2CON^1;
00C8.0 +1 258 sbit CP_RL2= T2CON^0;
+1 259
00D8.7 +1 260 sbit SMOD_1= WDCON^7;
00D8.6 +1 261 sbit POR = WDCON^6;
00D8.5 +1 262 sbit EPF1 = WDCON^5;
00D8.4 +1 263 sbit PF1 = WDCON^4;
00D8.3 +1 264 sbit WDIF = WDCON^3;
00D8.2 +1 265 sbit WTRF = WDCON^2;
00D8.1 +1 266 sbit EWT = WDCON^1;
00D8.0 +1 267 sbit RWT = WDCON^0;
+1 268
+1 269
00E8.7 +1 270 sbit EPMIE = EIE^7;
00E8.6 +1 271 sbit C0IE = EIE^6;
+1 272
00E8.5 +1 273 sbit EAIE = EIE^5;
00E8.4 +1 274 sbit EWDI = EIE^4;
+1 275
00E8.3 +1 276 sbit EWPI = EIE^3;
+1 277
00E8.2 +1 278 sbit ES2 = EIE^2;
+1 279
00E8.1 +1 280 sbit ET3 = EIE^1;
+1 281
00E8.0 +1 282 sbit EX25 = EIE^0;
+1 283
+1 284
00F8.7 +1 285 sbit EPMIP = EIP^7;
00F8.6 +1 286 sbit C0IP = EIP^6;
00F8.5 +1 287 sbit EAIP = EIP^5;
00F8.4 +1 288 sbit PWDI = EIP^4;
00F8.3 +1 289 sbit PWPI = EIP^3; /* Alternate PC3 */
00F8.2 +1 290 sbit PS2 = EIP^2; /* Alternate PC2 */
00F8.1 +1 291 sbit PT3 = EIP^1; /* Alternate PC1 */
00F8.0 +1 292 sbit PX2_5 = EIP^0; /* Alternate PC0 */
+1 293
+1 294
295
296 EXTERN ECODE(init_romexport)
297
298 ;****************************************************************************
299 ;
300 ; BEGIN CONFIGURABLE OPTIONS
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 ;
01194000 320 OSCILLATOR_FREQ equ 18432000
321
AX51 MACRO ASSEMBLER STARTUP400 04/04/06 14:47:23 PAGE 6
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 ;
330 ; Set USE_REENTRANT_STACK to 1 to use Keil's reentrant stack (allows
331 ; recursive function calls and for multiple processes to call a single
332 ; function simultaneously). Set REENTRANT_STACK_TOP to the top of the
333 ; reentrant stack if USE_REENTRANT_STACK is 1.
334 ;
335 $set (USE_REENTRANT_STACK = 0)
FFFF 336 REENTRANT_STACK_TOP equ 0FFFFh
337
338 ;
339 ; Set SETMAC to 1 to give the TINI a specific MAC ID as defined by
340 ; the equates MAC_MSB, MAC_5, ..., MAC_LSB. Set SETMAC to 2 to
341 ; set registers r5:r4:r3:r2:r1:r0 to your own MAC ID (see 'User MAC Code'
342 ; below). Use a SETMAC of 0 to find the MAC in a 2502-E48.
343 ;
344 $set (SETMAC = 0)
345
0000 346 MAC_MSB equ 00h
0060 347 MAC_5 equ 60h
0062 348 MAC_4 equ 62h
0063 349 MAC_3 equ 63h
0064 350 MAC_2 equ 64h
0065 351 MAC_1 equ 65h
0067 352 MAC_LSB equ 67h
353
354 ;
355 ; Change ERASE_IDATA to erase the internal data memory before the program begins.
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 ;****************************************************************************
FFFB 370 TIMER_RELOAD equ (65536 - ((OSCILLATOR_FREQ) / (32 * SERIAL0_BAUDRATE)))
371
372
373
374 $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
384
385
386 name ?C_STARTUP
387 ;
AX51 MACRO ASSEMBLER STARTUP400 04/04/06 14:47:23 PAGE 7
388 ; Make sure the compiler does not use the OS flags & bits
389 ;
000008 390 DSEG at 08h
000008 391 regbank123: ds 24
392
000020 393 DSEG AT 20h
000020 394 wos_flags: ds 1
395
000027 396 DSEG AT 27h
000027 397 rom_flags: ds 1
398
000068 399 DSEG AT 68h
000068 400 wos_crit_count: ds 1
401
00006B 402 DSEG AT 6Bh
00006B 403 sched_reload: ds 2
00006D 404 curr_pc: ds 3
405
000072 406 DSEG AT 72h
000072 407 sched: ds 3
000075 408 ms_count: ds 5
409
00007B 410 DSEG AT 7Bh
00007B 411 hb_chandle: ds 5
412
413
414 extrn code (?C_START)
415 public ?C_STARTUP
416
417 $if (USE_MONITOR = 0)
420000 418 ?C_CPURESET?0 segment code at 420000H
419 $endif
420 $if (USE_MONITOR = 1)
?C_CPURESET?0 segment code at 020000H
$endif
423
------ 424 rseg ?C_CPURESET?0
420000 8005 425 ?C_STARTUP: sjmp past_loader_tag
420002 54494E49 426 db 'TINI' ; Tag for TINI Environment 1.
02c
427 ; or later (ignored in
1.02b)
420006 42 428 db byte2(?C_STARTUP) ; Target bank
420007 429 past_loader_tag:
420007 C2AF 430 clr ea ; No interrupts, please
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -