⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startup400.lst

📁 这是TCP/IP协议组播的实现代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
                        431     
                        432                     ;
                        433                     ; Make sure we are in contiguous mode
                        434                     ;
420009 75C7AA           435                     mov     ta, #0xAA                          ; Enable access to ACON
42000C 75C755           436                     mov     ta, #0x55
42000F 439D02           437                     orl     acon, #2                           ; 24 bit mode
420012 02000000   F     438                     ljmp    far sanity_check                   ; Sanity check: Make sure 24 
                               bit mode is on
420016                  439     sanity_check:
420016 75C7AA           440                     mov     ta, #0xAA                          ; Enable access to MCON
420019 75C755           441                     mov     ta, #0x55
42001C 75C6AF           442                     mov     mcon, #0xAF                        ; Relocate RAM, data memory
42001F 75C7AA           443                     mov     ta, #0xAA                          ; Enable access to ACON
420022 75C755           444                     mov     ta, #0x55
420025 439D04           445                     orl     acon, #0x04                        ; Extended stack
                        446     
                        447                     ;
                        448                     ; Use the minimum number of stretch cycles on MOVX memory
                        449                     ;
420028 538EF8           450                     anl     ckcon, #0f8h
AX51 MACRO ASSEMBLER  STARTUP400                                                            04/04/06 14:47:23 PAGE     8

                        451      ;               orl     ckcon, #007h
                        452                     ;
                        453                     ; Make sure we are in a known state with respect to
                        454                     ; our fancy data pointers and register banks
                        455                     ;
42002B 758600           456                     mov     dps, #0
42002E 75D000           457                     mov     psw, #0
                        458     
                        459                     ;
                        460                     ; Set stack to 0 (we lose one byte, but don't
                        461                     ; have to know the size)
                        462                     ;
420031 758100           463                     mov     sp,#0
420034 759B00           464                     mov     esp,#0
                        465     
                        466                     ;
                        467                     ; Do the Crystal Multiplier
                        468                     ;
                        469     $if  XTALMULT = 2
                                startup_setxtal_mult_2:
                                                ;
                                                ; Multiply crystal frequency by 2
                                                ;
                                                mov     pmr, #10000010b                    ; Set for crystal * 2
                                                mov     pmr, #10010010b                    ; Enable multiplier
                                WaitCrystal:
                                                mov     a, exif                            ; Wait for multiplier to be r
                               eady
                                                jnb     acc.3, WaitCrystal                 ; Jump if CKRY is low
                                                mov     pmr, #00010010b                    ; Go to crystal * 2
                                
                                $elseif  XTALMULT = 4
                                startup_setxtal_mult_4:
                                                ;
                                                ; Multiply crystal frequency by 4
                                                ;
                                                mov     pmr, #10000000b                    ; Set to power up value
                                                mov     pmr, #10001000b                    ; Set for crystal * 4
                                                mov     pmr, #10011000b                    ; Enable multiplier
                                WaitCrystal4:
                                                mov     a, exif                            ; Wait for multiplier to be r
                               eady
                                                jnb     acc.3, WaitCrystal4                ; Jump if CKRY is low
                                                mov     pmr, #00011000b                    ; Go to crystal * 4
                                $endif 
                        494     
                        495                     ; Enable the serial0, using timer 2 at 115200
                        496                     ; Use this equation for the reloads:
                        497                     ;     reload H:L = 65536 - (oscillator / (32 * baud))
                        498                     ; We now use User Configurable Equates for the serial
                        499                     ; port settings.  The default is for 115200, which
                        500                     ; yeilds the following:
                        501                     ;     65536 - (14745600 / (32 * 115200)) = 65536 - (14745600 / 3686400)
                        502                     ;                                        = 65536 - 4
                        503                     ;                                        = 65532
                        504                     ;                                        = 0xFFFC
420037 75985A           505                     mov     scon0, #5Ah                        ; 10 bit serial 0, use timer 
                               baud rate, enable recieving
42003A 75CBFF           506                     mov     rcap2h, #High(TIMER_RELOAD)        ; Set timer reload high byte
42003D 75CAFB           507                     mov     rcap2l, #Low(TIMER_RELOAD)         ; Set timer reload low bye
420040 75C830           508                     mov     t2con, #30h                        ; Enable timer 2 for serial p
                               ort
420043 D2CA             509                     setb    tr2                                ; Set timer 2 to run
                        510     
                        511                     ; Make sure that we can output to the serial port
420045 D299             512                     setb    ti
AX51 MACRO ASSEMBLER  STARTUP400                                                            04/04/06 14:47:23 PAGE     9

                        513     
                        514     $if  (USE_REENTRANT_STACK <> 0)
                                                mov     ?C_XBP,#HIGH XBPSTACKTOP
                                                mov     ?C_XBP+1,#LOW XBPSTACKTOP
                                $endif 
                        518     
                        519     
                        520     $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 
                        529     
                        530     $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 
                        539     
                        540     $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 
                        555     
                        556     
                        557     
                        558     
                        559     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
                                                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
AX51 MACRO ASSEMBLER  STARTUP400                                                            04/04/06 14:47:23 PAGE    10

                                endif
                        580     
420047 12000000   E     581                     lcall   init_romexport
                        582     
                        583     
                        584     if ERASE_IDATA <> 0
                                                mov     r0, #ERASE_IDATA - 1
                                                clr     a
                                erase_idata_loop:
                                                mov     @r0, a
                                                djnz    r0, erase_idata_loop
                                endif
                        591     
                        592                 
42004B 02000000   E     593          ljmp    ?C_START
                        594                     end
AX51 MACRO ASSEMBLER  STARTUP400                                                            04/04/06 14:47:23 PAGE    11

SYMBOL TABLE LISTING
------ ----- -------


N A M E                        T Y P E  V A L U E     ATTRIBUTES

?C_CPURESET?0 . . . . . . . .  C  SEG   42004FH       REL=ABS, ALN=BYTE
?C_START. . . . . . . . . . .  C  ADDR  -------       EXT
?C_STARTUP. . . . . . . . . .  C  ADDR  00420000H 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   
C_T2. . . . . . . . . . . . .  B  ADDR  00C8H.1   A   
CKCON . . . . . . . . . . . .  D  ADDR  008EH     A   
COR . . . . . . . . . . . . .  D  ADDR  00CEH     A   
CP_RL2. . . . . . . . . . . .  B  ADDR  00C8H.0   A   
CSRA. . . . . . . . . . . . .  D  ADDR  00E4H     A   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -