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

📄 startup.a51

📁 12864LCD的C51程序+仿真电路
💻 A51
字号:
;------------------------------------------------------------------------------

;  This file is part of the C51 Compiler package

;  Copyright (c) 1988-1999 Keil Elektronik GmbH and 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 0

IDATALEN	EQU	80H	; the length of IDATA memory in bytes.

;

XDATASTART	EQU	0H	; the absolute start-address of XDATA memory

XDATALEN	EQU	0H	; the length of XDATA memory in bytes.

;

PDATASTART	EQU	0H	; the absolute start-address of PDATA memory

PDATALEN	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	0	; 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.

;

;------------------------------------------------------------------------------



		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_C51STARTUP



STARTUP1:



IF IDATALEN <> 0

		MOV	R0,#IDATALEN - 1

		CLR	A

IDATALOOP:	MOV	@R0,A

		DJNZ	R0,IDATALOOP

ENDIF



IF 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	A

XDATALOOP:	MOVX	@DPTR,A

		INC	DPTR

		DJNZ	R7,XDATALOOP

		DJNZ	R6,XDATALOOP

ENDIF



IF PPAGEENABLE <> 0

		MOV	P2,#PPAGE

ENDIF



IF PDATALEN <> 0

		MOV	R0,#PDATASTART

		MOV	R7,#LOW (PDATALEN)

		CLR	A

PDATALOOP:	MOVX	@R0,A

		INC	R0

		DJNZ	R7,PDATALOOP

ENDIF



IF IBPSTACK <> 0

EXTRN DATA (?C_IBP)



		MOV	?C_IBP,#LOW IBPSTACKTOP

ENDIF



IF XBPSTACK <> 0

EXTRN DATA (?C_XBP)



		MOV	?C_XBP,#HIGH XBPSTACKTOP

		MOV	?C_XBP+1,#LOW XBPSTACKTOP

ENDIF



IF PBPSTACK <> 0

EXTRN DATA (?C_PBP)

		MOV	?C_PBP,#LOW PBPSTACKTOP

ENDIF



		MOV	SP,#?STACK-1

EXTRN CODE (?B_SWITCH0)

                CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0

		LJMP	?C_START



		END

⌨️ 快捷键说明

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