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

📄 startup.a51

📁 芯科rf资料
💻 A51
字号:
$NOMOD51;------------------------------------------------------------------------------;  This file is part of the C51 Compiler package;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.;  Version 8.01;;  *** <<< Use Configuration Wizard in Context Menu >>> ***;------------------------------------------------------------------------------;  STARTUP.A51:  This code is executed after processor reset.;;  To translate this file use A51 with the following invocation:;;     A51 STARTUP.A51;;  To link the modified STARTUP.OBJ file to your application use the following;  Lx51 invocation:;;     Lx51 your object file list, STARTUP.OBJ  controls;;------------------------------------------------------------------------------;;  User-defined <h> Power-On Initialization of Memory;;  With the following EQU statements the initialization of memory;  at processor reset can be defined:;; <o> IDATALEN: IDATA memory size <0x0-0x100>;     <i> Note: The absolute start-address of IDATA memory is always 0;     <i>       The IDATA space overlaps physically the DATA and BIT areas.IDATALEN        EQU     80H;; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF> ;     <i> The absolute start address of XDATA memoryXDATASTART      EQU     0     ;; <o> XDATALEN: XDATA memory size <0x0-0xFFFF> ;     <i> The length of XDATA memory in bytes.XDATALEN        EQU     0      ;; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF> ;     <i> The absolute start address of PDATA memoryPDATASTART      EQU     0H;; <o> PDATALEN: PDATA memory size <0x0-0xFF> ;     <i> The length of PDATA memory in bytes.PDATALEN        EQU     0H;;</h>;------------------------------------------------------------------------------;;<h> Reentrant Stack Initialization;;  The following EQU statements define the stack pointer for reentrant;  functions and initialized it:;; <h> Stack Space for reentrant functions in the SMALL model.;  <q> IBPSTACK: Enable SMALL model reentrant stack;     <i> Stack space for reentrant functions in the SMALL model.IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.;  <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>;     <i> Set the top of the stack to the highest location.IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  ; </h>;; <h> Stack Space for reentrant functions in the LARGE model.      ;  <q> XBPSTACK: Enable LARGE model reentrant stack;     <i> Stack space for reentrant functions in the LARGE model.XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.;  <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>;     <i> Set the top of the stack to the highest location.XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1 ; </h>;; <h> Stack Space for reentrant functions in the COMPACT model.    ;  <q> PBPSTACK: Enable COMPACT model reentrant stack;     <i> Stack space for reentrant functions in the COMPACT model.PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.;;   <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>;     <i> Set the top of the stack to the highest location.PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  ; </h>;</h>;------------------------------------------------------------------------------;;  Memory Page for Using the Compact Model with 64 KByte xdata RAM;  <e>Compact Model Page Definition;;  <i>Define the XDATA page used for PDATA variables. ;  <i>PPAGE must conform with the PPAGE set in the linker invocation.;; Enable pdata memory page initalizationPPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.;; <o> PPAGE number <0x0-0xFF> ; <i> uppermost 256-byte address of the page used for PDATA variables.PPAGE           EQU     0;; <o> SFR address which supplies uppermost address byte <0x0-0xFF> ; <i> most 8051 variants use P2 as uppermost address bytePPAGE_SFR       DATA    0A0H;; </e>;------------------------------------------------------------------------------; Standard SFR Symbols ACC     DATA    0E0HB       DATA    0F0HSP      DATA    81HDPL     DATA    82HDPH     DATA    83HPCA0MD	DATA		0D9H                NAME    ?C_STARTUP?C_C51STARTUP   SEGMENT   CODE?STACK          SEGMENT   IDATA                RSEG    ?STACK                DS      1                EXTRN CODE (?C_START)                PUBLIC  ?C_STARTUP                CSEG    AT      0?C_STARTUP:     LJMP    STARTUP1                RSEG    ?C_C51STARTUPSTARTUP1:;Disable the Watch Dog TimerWDT_DISABLE:		MOV PCA0MD, #0IF IDATALEN <> 0                MOV     R0,#IDATALEN - 1                CLR     AIDATALOOP:      MOV     @R0,A                DJNZ    R0,IDATALOOPENDIFIF XDATALEN <> 0                MOV     DPTR,#XDATASTART                MOV     R7,#LOW (XDATALEN)  IF (LOW (XDATALEN)) <> 0                MOV     R6,#(HIGH (XDATALEN)) +1  ELSE                MOV     R6,#HIGH (XDATALEN)  ENDIF                CLR     AXDATALOOP:      MOVX    @DPTR,A                INC     DPTR                DJNZ    R7,XDATALOOP                DJNZ    R6,XDATALOOPENDIFIF PPAGEENABLE <> 0                MOV     PPAGE_SFR,#PPAGEENDIFIF PDATALEN <> 0                MOV     R0,#LOW (PDATASTART)                MOV     R7,#LOW (PDATALEN)                CLR     APDATALOOP:      MOVX    @R0,A                INC     R0                DJNZ    R7,PDATALOOPENDIFIF IBPSTACK <> 0EXTRN DATA (?C_IBP)                MOV     ?C_IBP,#LOW IBPSTACKTOPENDIFIF XBPSTACK <> 0EXTRN DATA (?C_XBP)                MOV     ?C_XBP,#HIGH XBPSTACKTOP                MOV     ?C_XBP+1,#LOW XBPSTACKTOPENDIFIF PBPSTACK <> 0EXTRN DATA (?C_PBP)                MOV     ?C_PBP,#LOW PBPSTACKTOPENDIF                MOV     SP,#?STACK-1; This code is required if you use L51_BANK.A51 with Banking Mode 4;<h> Code Banking; <q> Select Bank 0 for L51_BANK.A51 Mode 4#if 0   ;     <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.EXTRN CODE (?B_SWITCH0)                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0#endif;</h>                LJMP    ?C_START                END

⌨️ 快捷键说明

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