📄 startup.a51
字号:
;------------------------------------------------------------------------------; This file is part of the C51 Compiler package; Copyright (c) 1995-1997 Keil Software, Inc.;------------------------------------------------------------------------------; 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; BL51 invocation:;; BL51 <your object file list>, STARTUP.OBJ <controls>;;------------------------------------------------------------------------------;; User-defined Power-On Initialization of Memory;; With the following EQU statements the initialization of memory; at processor reset can be defined:;; the absolute start-address of IDATA memory is always 0IDATALEN EQU 0H ; the length of IDATA memory in bytes.;XDATASTART EQU 0D000H ; the absolute start-address of XDATA memoryXDATALEN EQU 02000H ; the length of XDATA memory in bytes.;PDATASTART EQU 0H ; the absolute start-address of PDATA memoryPDATALEN EQU 0H ; the length of PDATA memory in bytes.;; Notes: The IDATA space overlaps physically the DATA and BIT areas of the; 8051 CPU. At minimum the memory space occupied from the C51 ; run-time routines must be set to zero.;------------------------------------------------------------------------------;; Reentrant Stack Initilization;; The following EQU statements define the stack pointer for reentrant; functions and initialized it:;; Stack Space for reentrant functions in the SMALL model.IBPSTACK EQU 1 ; set to 1 if small reentrant is used.IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.;; Stack Space for reentrant functions in the LARGE model. XBPSTACK EQU 0 ; set to 1 if large reentrant is used.XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;; Stack Space for reentrant functions in the COMPACT model. PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;;------------------------------------------------------------------------------;; Page Definition for Using the Compact Model with 64 KByte xdata RAM;; The following EQU statements define the xdata page used for pdata; variables. The EQU PPAGE must conform with the PPAGE control used; in the linker invocation.;PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.PPAGE EQU 0 ; define PPAGE number.;;------------------------------------------------------------------------------$include (bit515.inc) NAME ?C_STARTUP?C_C51STARTUP SEGMENT CODE?STACK SEGMENT IDATA RSEG ?STACK DS 1 EXTRN CODE (?C_START,keypadi) PUBLIC ?C_STARTUP$IF RISM <> 0 CSEG AT 8000h$ELSE CSEG AT 0$ENDIF;$IF RISM <> 0; stard EQU 8100H;$ELSE; stard EQU 0000H;$ENDIF; CSEG AT stard?C_STARTUP: LJMP STARTUP1 CSEG AT 8013h ljmp ext1srv ext1srv:; clr EX1 call keypadi setb EX1 reti RSEG ?C_C51STARTUPSTARTUP1:; Initilization Specific To The EMAC MicroPac 535 SBC clr P5_5 setb P5_5 ; reset SC26C92 DUART clr P5_5 ; bring DUART out of reset setb P5_0 ; make A16 of 128K Ram, hi clr P5_1 ; enable memory mapped IO ; End Of MicroPac 535 InitilizationIF 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 P2,#PPAGEENDIFIF PDATALEN <> 0 MOV R0,#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 LJMP ?C_START END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -