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

📄 start_xc.lst

📁 XC8888是XC800家族的新成员
💻 LST
📖 第 1 页 / 共 2 页
字号:
  0082               177     DPL     DATA    82H
  0083               178     DPH     DATA    83H
                     179     
                     180     ; XC8xx specific SFR Symbols used in STARTUP code
  00BF               181     sfr  SCU_PAGE = 0xBF
  00B7               182     sfr  PLL_CON  = 0xB7
  00B6               183     sfr  OSC_CON  = 0xB6
  00BB               184     sfr  PASSWD   = 0xBB
  00B3               185     sfr  XADDRH   = 0xB3
                     186     
                     187     
                     188                     NAME    ?C_STARTUP
                     189     
                     190     
A51 MACRO ASSEMBLER  START_XC                                                             04/27/2008 23:46:22 PAGE     4

                     191     ?C_C51STARTUP   SEGMENT   CODE
                     192     ?STACK          SEGMENT   IDATA
                     193     
----                 194                     RSEG    ?STACK
0000                 195                     DS      1
                     196     
                     197                     EXTRN CODE (?C_START)
                     198                     PUBLIC  ?C_STARTUP
                     199     
----                 200                     CSEG    AT      0
0000 020000   F      201     ?C_STARTUP:     LJMP    STARTUP1
                     202     
----                 203                     RSEG    ?C_C51STARTUP
                     204     
0000                 205     STARTUP1:
                     206     
                     207     IF XTAL <> 0
                                                                 ; switch to external XTAL
                                             MOV     SCU_PAGE,#1
                                             ORL     PLL_CON, #0x08  ;VCOBYP = 1 
                                             ORL     PLL_CON, #0x04  ; OSCDISC = 1   _ _ _ NDIV, VCOBYP, OSCDISC, RESLD,
                              LOCK
                                             ORL     OSC_CON, #0x04  ; OSCSS = 1     0, 0, 0, OSCPD, XPD, OSCSS, ORDRES,
                              OSCR
                                             ANL     OSC_CON, #0xF7  ; XPD = 0       power xtal
                                                             
                                             MOV     R0,#10          ; delay around 1.5 ms
                             DelayXTAL:
                                             DJNZ    R1,$
                                             DJNZ    R0,DelayXTAL
                                                                     ; redetection of osc
                             OSCR_NOTSET:
                                             ORL     OSC_CON, #0x02  ; ORDRES = 1
                             WAIT_ORDRES_0:
                                             MOV     A,OSC_CON
                                             JB      ACC.1,WAIT_ORDRES_0  
                                             JNB     ACC.0,OSCR_NOTSET    
                                     
                                                                         ; VCOBYP to change N-Divider
                                             ORL     PLL_CON, #0x08      ; VCOBYP = 1
                                             ANL     PLL_CON, #0xFB      ; OSCDISC = 0
                                             MOV     PASSWD,  #0x98      ; open access to writing protected bit
                                             ANL     PLL_CON, #0x0F
                                             ORL     PLL_CON, #NDIV*16
                             
                                             ORL     PLL_CON, #0x02     ; detect PLL lock
                             WAIT_LOCK:
                                             MOV     A, PLL_CON
                                             JNB     ACC.0, WAIT_LOCK
                                                  ; reconnect to PLL
                                             ANL     PLL_CON, #0xF7   ; VCOBYP = 0
                                             MOV     SCU_PAGE,#0
                             ENDIF
                     242     
                     243     IF IDATALEN <> 0
0000 787F            244                     MOV     R0,#IDATALEN - 1
0002 E4              245                     CLR     A
0003 F6              246     IDATALOOP:      MOV     @R0,A
0004 D8FD            247                     DJNZ    R0,IDATALOOP
                     248     ENDIF
                     249     
                     250     IF XDATALEN <> 0
0006 90F000          251                     MOV     DPTR,#XDATASTART
0009 7F00            252                     MOV     R7,#LOW (XDATALEN)
                     253       IF (LOW (XDATALEN)) <> 0
                                             MOV     R6,#(HIGH (XDATALEN)) +1
A51 MACRO ASSEMBLER  START_XC                                                             04/27/2008 23:46:22 PAGE     5

                               ELSE
000B 7E02            256                     MOV     R6,#HIGH (XDATALEN)
                     257       ENDIF
000D E4              258                     CLR     A
000E F0              259     XDATALOOP:      MOVX    @DPTR,A
000F A3              260                     INC     DPTR
0010 DFFC            261                     DJNZ    R7,XDATALOOP
0012 DEFA            262                     DJNZ    R6,XDATALOOP
                     263     ENDIF
                     264     
                     265     IF PPAGEENABLE <> 0
                                             MOV     SCU_PAGE,#3 
                                             MOV     XADDRH,#PPAGE    ;Page register change in DAvE!!          
                                             MOV     SCU_PAGE,#0 
                             ENDIF
                     270     
                     271     IF PDATALEN <> 0
                                             MOV     R0,#LOW (PDATASTART)
                                             MOV     R7,#LOW (PDATALEN)
                                             CLR     A
                             PDATALOOP:      MOVX    @R0,A
                                             INC     R0
                                             DJNZ    R7,PDATALOOP
                             ENDIF
                     279     
                     280     IF IBPSTACK <> 0
                             EXTRN DATA (?C_IBP)
                             
                                             MOV     ?C_IBP,#LOW IBPSTACKTOP
                             ENDIF
                     285     
                     286     IF XBPSTACK <> 0
                             EXTRN DATA (?C_XBP)
                             
                                             MOV     ?C_XBP,#HIGH XBPSTACKTOP
                                             MOV     ?C_XBP+1,#LOW XBPSTACKTOP
                             ENDIF
                     292     
                     293     IF PBPSTACK <> 0
                             EXTRN DATA (?C_PBP)
                                             MOV     ?C_PBP,#LOW PBPSTACKTOP
                             ENDIF
                     297     
0014 758100   F      298                     MOV     SP,#?STACK-1
                     299     
0017 020000   F      300                     LJMP    ?C_START
                     301     
                     302     ; Overwrite ?C?DPSEL address for XC866 Device
                     303     PUBLIC ?C?DPSEL
  00A2               304     ?C?DPSEL DATA 0A2H   ; DPSEL address for Mentor M8051EW
                     305     
                     306      END
                             
A51 MACRO ASSEMBLER  START_XC                                                             04/27/2008 23:46:22 PAGE     6

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


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

?C?DPSEL . . . . .  D ADDR   00A2H   A   
?C_C51STARTUP. . .  C SEG    001AH       REL=UNIT
?C_START . . . . .  C ADDR   -----       EXT
?C_STARTUP . . . .  C ADDR   0000H   A   
?STACK . . . . . .  I SEG    0001H       REL=UNIT
ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
IBPSTACK . . . . .  N NUMB   0000H   A   
IBPSTACKTOP. . . .  N NUMB   0100H   A   
IDATALEN . . . . .  N NUMB   0080H   A   
IDATALOOP. . . . .  C ADDR   0003H   R   SEG=?C_C51STARTUP
NDIV_XC866 . . . .  N NUMB   0002H   A   
NDIV_XC88X . . . .  N NUMB   0009H   A   
OSC_CON. . . . . .  D ADDR   00B6H   A   
PASSWD . . . . . .  D ADDR   00BBH   A   
PBPSTACK . . . . .  N NUMB   0000H   A   
PBPSTACKTOP. . . .  N NUMB   0100H   A   
PDATALEN . . . . .  N NUMB   0000H   A   
PDATASTART . . . .  N NUMB   F000H   A   
PLL_CON. . . . . .  D ADDR   00B7H   A   
PPAGE. . . . . . .  N NUMB   00F0H   A   
PPAGEENABLE. . . .  N NUMB   0000H   A   
SCU_PAGE . . . . .  D ADDR   00BFH   A   
SP . . . . . . . .  D ADDR   0081H   A   
STARTUP1 . . . . .  C ADDR   0000H   R   SEG=?C_C51STARTUP
XADDRH . . . . . .  D ADDR   00B3H   A   
XBPSTACK . . . . .  N NUMB   0000H   A   
XBPSTACKTOP. . . .  N NUMB   0000H   A   
XC866_CHIP . . . .  N NUMB   0000H   A   
XC88X_CHIP . . . .  N NUMB   0001H   A   
XDATALEN . . . . .  N NUMB   0200H   A   
XDATALOOP. . . . .  C ADDR   000EH   R   SEG=?C_C51STARTUP
XDATASTART . . . .  N NUMB   F000H   A   
XTAL . . . . . . .  N NUMB   0000H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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