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

📄 startup400.lst

📁 基于DS80C400的ADz转换程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
                        457     
------                  458                     rseg    ?C_CPURESET?0
400000 8005             459     ?C_STARTUP:     sjmp    past_loader_tag
400002 54494E49         460                     db     'TINI'                              ; Tag for TINI Environment 1.
                               02c
                        461                                                                ; or later (ignored in 1.02b)
400006 40               462                     db      byte2(?C_STARTUP)                  ; Target bank
400007                  463     past_loader_tag:
400007 C2AF             464                     clr     ea                                 ; No interrupts, please
                        465     
                        466     $if  INTERNALSRAM = 1
                                                ; 
                                                ; If DS80C410/DS80C411, optionally enable the internal 64KB SRAM on CE0
                                                ; and set it to merged code=data.
                                                ; 
                                                mov     a, mcon1
                                                anl     a, #01111111b                      ; Clear IRAMD
                                                orl     a, #01000000b                      ; Set PRAME
                                                mov     ta, #0xAA                          ; Enable access to MCON1
                                                mov     ta, #0x55
                                                mov     mcon1, a
                                $endif 
                        478     
                        479                     ;
                        480                     ; Make sure we are in contiguous mode
                        481                     ;
400009 75C7AA           482                     mov     ta, #0xAA                          ; Enable access to ACON
40000C 75C755           483                     mov     ta, #0x55
40000F 439D02           484                     orl     acon, #2                           ; 24 bit mode
400012 02000000   F     485                     ljmp    far sanity_check                   ; Sanity check: Make sure 24 
                               bit mode is on
400016                  486     sanity_check:
400016 75C7AA           487                     mov     ta, #0xAA                          ; Enable access to MCON
400019 75C755           488                     mov     ta, #0x55
40001C 75C6AF           489                     mov     mcon, #0xAF                        ; Relocate RAM, data memory
40001F 75C7AA           490                     mov     ta, #0xAA                          ; Enable access to ACON
400022 75C755           491                     mov     ta, #0x55
400025 439D04           492                     orl     acon, #0x04                        ; Extended stack
                        493     
                        494                     ;
                        495                     ; Use the minimum number of stretch cycles on MOVX memory
                        496                     ;
400028 538EF8           497                     anl     ckcon, #0f8h
                        498     
                        499                     ;
                        500                     ; Make sure we are in a known state with respect to
                        501                     ; our fancy data pointers and register banks
                        502                     ;
40002B 758600           503                     mov     dps, #0
40002E 75D000           504                     mov     psw, #0
                        505     
                        506                     ;
                        507                     ; Set stack to 0 (we lose one byte, but don't
                        508                     ; have to know the size)
                        509                     ;
400031 758100           510                     mov     sp,#0
400034 759B00           511                     mov     esp,#0
                        512     
                        513                     ;
                        514                     ; Do the Crystal Multiplier
                        515                     ;
                        516     $if  XTALMULT = 2
                                startup_setxtal_mult_2:
AX51 MACRO ASSEMBLER  STARTUP400                                                            01/24/07 12:40:12 PAGE     9

                                                ;
                                                ; 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, #10000010b                    ; Set to power up value
                                                mov     pmr, #10001010b                    ; Set for crystal * 4
                                                mov     pmr, #10011010b                    ; Enable multiplier
                                WaitCrystal4:
                                                mov     a, exif                            ; Wait for multiplier to be r
                               eady
                                                jnb     acc.3, WaitCrystal4                ; Jump if CKRY is low
                                                mov     pmr, #00011010b                    ; Go to crystal * 4
                                $endif 
                        541     
                        542     $if  (INITIALIZE_SERIAL0 <> 0)
                        543                     ; Enable the serial0, using timer 2 at 115200
                        544                     ; Use this equation for the reloads:
                        545                     ;     reload H:L = 65536 - (oscillator / (32 * baud))
                        546                     ; We now use User Configurable Equates for the serial
                        547                     ; port settings.  The default is for 115200, which
                        548                     ; yeilds the following:
                        549                     ;     65536 - (14745600 / (32 * 115200)) = 65536 - (14745600 / 3686400)
                        550                     ;                                        = 65536 - 4
                        551                     ;                                        = 65532
                        552                     ;                                        = 0xFFFC
400037 75985A           553                     mov     scon0, #5Ah                        ; 10 bit serial 0, use timer 
                               baud rate, enable recieving
40003A 75CBFF           554                     mov     rcap2h, #High(TIMER_RELOAD)        ; Set timer reload high byte
40003D 75CAFC           555                     mov     rcap2l, #Low(TIMER_RELOAD)         ; Set timer reload low bye
400040 75C830           556                     mov     t2con, #30h                        ; Enable timer 2 for serial p
                               ort
400043 D2CA             557                     setb    tr2                                ; Set timer 2 to run
                        558     
                        559                     ; Make sure that we can output to the serial port
400045 D299             560                     setb    ti
                        561     $else 
                                                clr     tr2                                ; Disable serial 0 output if 
                               configured by ROM loader
                                $endif 
                        564     
                        565     
                        566     if ERASE_IDATA <> 0
                        567                     ; Save the boot state -- this direct will be saved and cleared by init_r
                               omexport
400047 C021             568                     push    BFLAGS
400049 78FF             569                     mov     r0, #ERASE_IDATA - 1
40004B E4               570                     clr     a
40004C                  571     erase_idata_loop:
40004C F6               572                     mov     @r0, a
40004D D8FD             573                     djnz    r0, erase_idata_loop
40004F D021             574                     pop     BFLAGS
                        575     endif
                        576     
                        577     $if  (USE_REENTRANT_STACK <> 0)
AX51 MACRO ASSEMBLER  STARTUP400                                                            01/24/07 12:40:12 PAGE    10

                                                mov     xbp_loc, #?C_XBP
                                                mov     ?C_XBP,#HIGH XBPSTACKTOP
                                                mov     ?C_XBP+1,#LOW XBPSTACKTOP
                                else
400051 750000     F     582                     mov     xbp_loc, #0
                        583     $endif 
                        584     
                        585     
                        586     $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 
                        595     
                        596     $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 
                        605     
                        606     $if  SETMAC > 0
                                                ; Push registers r0 to r5
                                                push    0
                                                push    1
                                                push    2
                                                push    3
                                                push    4
                                                push    5
                                
                                                mov     a, #'C'
                                                push    acc
                                                mov     a, #'A'
                                                push    acc
                                                mov     a, #'M'
                                                push    acc
                                $endif 
                        622     
                        623     
                        624     
                        625     
                        626     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
AX51 MACRO ASSEMBLER  STARTUP400                                                            01/24/07 12:40:12 PAGE    11

                                                djnz    r6, erase_xdata_loop
                                                djnz    r5, erase_xdata_loop
                                endif
                        647     
400054 02000000   E     648                     ljmp    ?C_START
                        649                     end
AX51 MACRO ASSEMBLER  STARTUP400                                                            01/24/07 12:40:12 PAGE    12

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


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

?C_CPURESET?0 . . . . . . . .  C  SEG   400058H       REL=ABS, ALN=BYTE
?C_START. . . . . . . . . . .  C  ADDR  -------       EXT
?C_STARTUP. . . . . . . . . .  C  ADDR  00400000H 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   
BFLAGS. . . . . . . . . . . .  N  NUMB  0021H     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   

⌨️ 快捷键说明

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