📄 startup400.lst
字号:
060028 75C7AA 443 mov ta, #0xAA ; Enable access to ACON
06002B 75C755 444 mov ta, #0x55
06002E 539D3F 445 anl acon, #0x3F ; reallocate 32K rom to 00000
0h~007FFFFh
446
447
448 ;mov p5cnt, #0x17
449 ;
450 ; Use the minimum number of stretch cycles on MOVX memory
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 8
451 ;
060031 538EF8 452 anl ckcon, #0f8h
453
454
455 ;
456 ; Make sure we are in a known state with respect to
457 ; our fancy data pointers and register banks
458 ;
459 ; mov dps, #0
060034 758600 460 mov dps, #0x00
060037 75D000 461 mov psw, #0
462
463
464 ;
465 ; Set stack to 0 (we lose one byte, but don't
466 ; have to know the size)
467 ;
06003A 758100 468 mov sp,#0
06003D 759B00 469 mov esp,#0
470
471
472
473 ;
474 ; Do the Crystal Multiplier
475 ;
476 $if XTALMULT = 2
startup_setxtal_mult_2:
;
; Multiply crystal frequency by 2
;
mov pmr, #10000000b ; Set for crystal * 2
mov pmr, #10010000b ; Enable multiplier
WaitCrystal:
mov a, exif ; Wait for multiplier to be r
eady
jnb acc.3, WaitCrystal ; Jump if CKRY is low
mov pmr, #00010000b ; Go to crystal * 2
$elseif XTALMULT = 4
060040 489 startup_setxtal_mult_4:
490 ;
491 ; Multiply crystal frequency by 4
492 ;
493
060040 75C482 494 mov pmr, #10000010b ; Set to power up value
060043 53C4EF 495 anl pmr, #11101111b ; Disable multiplier
496 ; mov pmr, #10001010b ; Set for crystal * 4
060046 43C408 497 orl pmr, #00001000b
060049 43C410 498 orl pmr, #00010000b ; Enable multiplier
499 ; mov pmr, #10011010b ; Enable multiplier
06004C 500 WaitCrystal4:
06004C E591 501 mov a, exif ; Wait for multiplier to be r
eady
06004E 30E3FB 502 jnb acc.3, WaitCrystal4 ; Jump if CKRY is low
060051 75C41A 503 mov pmr, #00011010b ; Go to crystal * 4
504 $endif
505
506 ; Enable the serial0, using timer 2 at 115200
507 ; Use this equation for the reloads:
508 ; reload H:L = 65536 - (oscillator / (32 * baud))
509 ; We now use User Configurable Equates for the serial
510 ; port settings. The default is for 115200, which
511 ; yeilds the following:
512 ; 65536 - (14745600 / (32 * 115200)) = 65536 - (14745600 / 3686400)
513 ; = 65536 - 4
514 ; = 65532
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 9
515 ; = 0xFFFC
060054 75985A 516 mov scon0, #5Ah ; 10 bit serial 0, use timer
baud rate, enable recieving
060057 75CBFF 517 mov rcap2h, #High(TIMER_RELOAD) ; Set timer reload high byte
06005A 75CAFB 518 mov rcap2l, #Low(TIMER_RELOAD) ; Set timer reload low bye
06005D 75C830 519 mov t2con, #30h ; Enable timer 2 for serial p
ort
060060 D2CA 520 setb tr2 ; Set timer 2 to run
521
522 ; Make sure that we can output to the serial port
060062 D299 523 setb ti
524
525 $if (USE_REENTRANT_STACK <> 0)
mov ?C_XBP,#HIGH XBPSTACKTOP
mov ?C_XBP+1,#LOW XBPSTACKTOP
$endif
529
530
531 $if SETMAC = 1
mov r0, #MAC_LSB
mov r1, #MAC_2
mov r2, #MAC_3
mov r3, #MAC_4
mov r4, #MAC_5
mov r5, #MAC_MSB
$endif
540
541 $if SETMAC = 2
;
; User MAC Code
;
; Insert code here that will get a MAC address in registers
; r5:r4:r3:r2:r1:r0, with r5 the MSB.
;
$endif
550
551 $if SETMAC > 0
push r0_b0
push r1_b0
push r2_b0
push r3_b0
push r4_b0
push r5_b0
mov a, #'C'
push acc
mov a, #'A'
push acc
mov a, #'M'
push acc
$endif
566
567
568
569
570 IF ERASE_XDATA_LEN <> 0
mov dptr, #ERASE_XDATA_ADDR
mov r7, #BYTE0 (ERASE_XDATA_LEN)
IF (BYTE0 (ERASE_XDATA_LEN)) <> 0
mov r6, #(BYTE1 ERASE_XDATA_LEN) +1
ELSE
mov r6, #BYTE1 (ERASE_XDATA_LEN)
ENDIF
IF (BYTE1 (ERASE_XDATA_LEN)) <> 0
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 10
mov r5, #(BYTE2 ERASE_XDATA_LEN) +1
ELSE
mov r5, #BYTE2 (ERASE_XDATA_LEN)
ENDIF
clr a
erase_xdata_loop:
movx @dptr, a
inc dptr
djnz r7, erase_xdata_loop
djnz r6, erase_xdata_loop
djnz r5, erase_xdata_loop
endif
591
592
593 ; mov ta, #0xAA
594 ; mov ta, #0x55
595 ; mov p4cnt, 0xef
596 ;
597 ; mov ta, #0xAA
598 ; mov ta, #0x55
599 ; mov p6cnt, 0xe0
600 ;
601 ; mov p5cnt, 0x87
602 ; mov p4, 0xfd
603 ; mov p6, 0xd0
604
060064 12000000 E 605 lcall init_romexport
606
607
608 if ERASE_IDATA <> 0
mov r0, #ERASE_IDATA - 1
clr a
erase_idata_loop:
mov @r0, a
djnz r0, erase_idata_loop
endif
615
060068 02000000 E 616 ljmp ?C_START
617 end
AX51 MACRO ASSEMBLER STARTUP400 11/04/06 11:07:36 PAGE 11
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C_CPURESET?0 . . . . . . . . C SEG 06006CH REL=ABS, ALN=BYTE
?C_START. . . . . . . . . . . C ADDR ------- EXT
?C_STARTUP. . . . . . . . . . C ADDR 00060000H R SEG=?C_CPURESET?0
AC. . . . . . . . . . . . . . B ADDR 00D0H.6 A
ACC . . . . . . . . . . . . . D ADDR 00E0H A
ACON. . . . . . . . . . . . . D ADDR 009DH A
AP. . . . . . . . . . . . . . D ADDR 009CH A
B . . . . . . . . . . . . . . D ADDR 00F0H A
BCUC. . . . . . . . . . . . . D ADDR 00E7H A
BCUD. . . . . . . . . . . . . D ADDR 00E6H A
BPA1. . . . . . . . . . . . . D ADDR 00DAH A
BPA2. . . . . . . . . . . . . D ADDR 00DBH A
BPA3. . . . . . . . . . . . . D ADDR 00DCH A
C0C . . . . . . . . . . . . . D ADDR 00A3H A
C0IE. . . . . . . . . . . . . B ADDR 00E8H.6 A
C0IP. . . . . . . . . . . . . B ADDR 00F8H.6 A
C0IR. . . . . . . . . . . . . D ADDR 00A5H A
C0M10C. . . . . . . . . . . . D ADDR 00B7H A
C0M11C. . . . . . . . . . . . D ADDR 00BBH A
C0M12C. . . . . . . . . . . . D ADDR 00BCH A
C0M13C. . . . . . . . . . . . D ADDR 00BDH A
C0M14C. . . . . . . . . . . . D ADDR 00BEH A
C0M15C. . . . . . . . . . . . D ADDR 00BFH A
C0M1C . . . . . . . . . . . . D ADDR 00ABH A
C0M2C . . . . . . . . . . . . D ADDR 00ACH A
C0M3C . . . . . . . . . . . . D ADDR 00ADH A
C0M4C . . . . . . . . . . . . D ADDR 00AEH A
C0M5C . . . . . . . . . . . . D ADDR 00AFH A
C0M6C . . . . . . . . . . . . D ADDR 00B3H A
C0M7C . . . . . . . . . . . . D ADDR 00B4H A
C0M8C . . . . . . . . . . . . D ADDR 00B5H A
C0M9C . . . . . . . . . . . . D ADDR 00B6H A
C0RE. . . . . . . . . . . . . D ADDR 00A7H A
C0RMS0. . . . . . . . . . . . D ADDR 0096H A
C0RMS1. . . . . . . . . . . . D ADDR 0097H A
C0S . . . . . . . . . . . . . D ADDR 00A4H A
C0TE. . . . . . . . . . . . . D ADDR 00A6H A
C0TMA0. . . . . . . . . . . . D ADDR 009EH A
C0TMA1. . . . . . . . . . . . D ADDR 009FH A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -