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

📄 startup400.lst

📁 这是TCP/IP协议组播的实现代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
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 + -