历史上的今天
返回首页

历史上的今天

今天是:2025年01月15日(星期三)

正在发生

2020年01月15日 | 单片机成长之路(51基础篇) - 018 keil51的STARTUP.A51

2020-01-15 来源:eefocus

STARTUP.A51原始文件:


  1 $NOMOD51;Ax51宏汇编器控制命令,禁止预定义的8051。使编译器不使能预定义的;8051符号,避免产生重复定义的错误。

  2 ;------------------------------------------------------------------------------

  3 ;  This file is part of the C51 Compiler package

  4 ;  Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.

  5 ;  Version 8.01

  6 ;

  7 ;  *** <<< Use Configuration Wizard in Context Menu >>> ***

  8 ;------------------------------------------------------------------------------

  9 ;  STARTUP.A51:  This code is executed after processor reset.

 10 ;

 11 ;  To translate this file use A51 with the following invocation:

 12 ;

 13 ;     A51 STARTUP.A51

 14 ;

 15 ;  To link the modified STARTUP.OBJ file to your application use the following

 16 ;  Lx51 invocation:

 17 ;

 18 ;     Lx51 your object file list, STARTUP.OBJ  controls

 19 ;

 20 ;------------------------------------------------------------------------------

 21 ;

 22 ;  User-defined Power-On Initialization of Memory

 23 ;

 24 ;  With the following EQU statements the initialization of memory

 25 ;  at processor reset can be defined:

 26 ;

 27 ; IDATALEN: IDATA memory size <0x0-0x100>

 28 ;      Note: The absolute start-address of IDATA memory is always 0

 29 ;            The IDATA space overlaps physically the DATA and BIT areas.

 30 IDATALEN        EQU     80H

 31 ;

 32 ; XDATASTART: XDATA memory start address <0x0-0xFFFF> 

 33 ;      The absolute start address of XDATA memory

 34 XDATASTART      EQU     0     

 35 ;

 36 ; XDATALEN: XDATA memory size <0x0-0xFFFF> 

 37 ;      The length of XDATA memory in bytes.

 38 XDATALEN        EQU     0      

 39 ;

 40 ; PDATASTART: PDATA memory start address <0x0-0xFFFF> 

 41 ;      The absolute start address of PDATA memory

 42 PDATASTART      EQU     0H

 43 ;

 44 ; PDATALEN: PDATA memory size <0x0-0xFF> 

 45 ;      The length of PDATA memory in bytes.

 46 PDATALEN        EQU     0H

 47 ;

 48 ;

 49 ;------------------------------------------------------------------------------

 50 ;

 51 ; Reentrant Stack Initialization

 52 ;

 53 ;  The following EQU statements define the stack pointer for reentrant

 54 ;  functions and initialized it:

 55 ;

 56 ; Stack Space for reentrant functions in the SMALL model.

 57 ;  IBPSTACK: Enable SMALL model reentrant stack

 58 ;      Stack space for reentrant functions in the SMALL model.

 59 IBPSTACK        EQU     0       ; set to 1 if small reentrant is used.

 60 ;  IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>

 61 ;      Set the top of the stack to the highest location.

 62 IBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  

 63 ;

 64 ;

 65 ; Stack Space for reentrant functions in the LARGE model.      

 66 ;  XBPSTACK: Enable LARGE model reentrant stack

 67 ;      Stack space for reentrant functions in the LARGE model.

 68 XBPSTACK        EQU     0       ; set to 1 if large reentrant is used.

 69 ;  XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>

 70 ;      Set the top of the stack to the highest location.

 71 XBPSTACKTOP     EQU     0xFFFF +1   ; default 0FFFFH+1 

 72 ;

 73 ;

 74 ; Stack Space for reentrant functions in the COMPACT model.    

 75 ;  PBPSTACK: Enable COMPACT model reentrant stack

 76 ;      Stack space for reentrant functions in the COMPACT model.

 77 PBPSTACK        EQU     0       ; set to 1 if compact reentrant is used.

 78 ;

 79 ;    PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>

 80 ;      Set the top of the stack to the highest location.

 81 PBPSTACKTOP     EQU     0xFF +1     ; default 0FFH+1  

 82 ;

 83 ;

 84 ;------------------------------------------------------------------------------

 85 ;

 86 ;  Memory Page for Using the Compact Model with 64 KByte xdata RAM

 87 ;  Compact Model Page Definition

 88 ;

 89 ;  Define the XDATA page used for PDATA variables. 

 90 ;  PPAGE must conform with the PPAGE set in the linker invocation.

 91 ;

 92 ; Enable pdata memory page initalization

 93 PPAGEENABLE     EQU     0       ; set to 1 if pdata object are used.

 94 ;

 95 ; PPAGE number <0x0-0xFF> 

 96 ; uppermost 256-byte address of the page used for PDATA variables.

 97 PPAGE           EQU     0

 98 ;

 99 ; SFR address which supplies uppermost address byte <0x0-0xFF> 

100 ; most 8051 variants use P2 as uppermost address byte

101 PPAGE_SFR       DATA    0A0H

102 ;

103 ;

104 ;------------------------------------------------------------------------------

105 

106 ; Standard SFR Symbols 

107 ACC     DATA    0E0H

108 B       DATA    0F0H

109 SP      DATA    81H

110 DPL     DATA    82H

111 DPH     DATA    83H

112 

113                 NAME    ?C_STARTUP

114 

115 

116 ?C_C51STARTUP   SEGMENT   CODE

117 ?STACK          SEGMENT   IDATA

118 

119                 RSEG    ?STACK

120                 DS      1

121 

122                 EXTRN CODE (?C_START)

123                 PUBLIC  ?C_STARTUP

124 

125                 CSEG    AT      0

126                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ?C_STARTUP:     LJMP    STARTUP1

推荐阅读

史海拾趣

问答坊 | AI 解惑

门禁对讲系统不安全因素探讨

在科学技术的进步和人们对移动通信服务需求的双重推动下,楼宇门禁对讲系统正应用到各小区中。目前楼宇门禁对讲移动通信网络仍将继续不断地向前发展,以后将能更完美地实现广大楼宇对讲移动通信用户的通信服务需求。 无线接口中的不安全因素 &nbs ...…

查看全部问答>

如何检验“ADC转换后的数据通过UART传送时是否遗漏”,请教

大家好,小弟最近在用ADI公司的ADuC7060芯片,要实现ADC转换后的数据通过UART传送到超级终端。 CPU是32位,ADC精度为24位。 我程序的总体思路是,ADC连续转换模式,每转换完一组24位数据,就触发中断,随后交给UART发送。(我现在的UART波特率大 ...…

查看全部问答>

WM_RASDIALEVENT 消息传递问题

dwRet=RasDial(NULL,NULL,&RasDialParams,0xFFFFFFFF,this->m_hWnd,&m_hRasConn);   拨号,第五个参数为NULL是阻塞拨号成功。现在想实现异步的方式,工程是基于对话框的,所以hWnd句柄直接用this->m_hWnd // 注册WM_RASDIALEVENT消息 ...…

查看全部问答>

组成原理的一道题,不明白为什么要加一个门电路,麻烦讲解一下,谢谢!

CPU的地址总线16根(A15—A0,A0为低位),双向数据总线8根(D7—D0),控制总线中与主存有 关的信号有MREQ(允许访存, 低电平有效),R/W(高电平为读命令,低电平为写命令)。主存地址空间分 配如下:0—8191为系统程序区,由只读存储芯片组成;8192— ...…

查看全部问答>

PXA270核心板方案:

PXA270核心板方案:   CPU:PXA270   SDRAM:128M   FLASH:32M   接口:USB、SDCARD、SERIAL等   LCD+TOUCH:3.5‘   支持WIFI 方案可提供:SCH + PCB + BOOM + WINCE ...…

查看全部问答>

向大虾请教:xscale 中断优先级嵌套问题

小弟采用的是ixp425的cpu,vxworks操作系统。使用两个通用定时器,实现优先级高定的时器中断打断优先级低的定时器中断服务程序,而优先级低的不能打断高优先级的中断。 但是小弟做的试验结果是两个定时器中断没有相互打断:任何一个进入中断服务程 ...…

查看全部问答>

德州仪器 (TI) 和美国国家半导体 联手

今天看到TI官网里有个德州仪器 (TI) 和美国国家半导体   联手 方案大家可以参考参考!…

查看全部问答>

linux下spi读写的时间开销问题。求助!!!

板子跑的linux,我在调spi的时候遇到一个问题就是读写外设的寄存器的时间开销太大。 static void transfer (int fd) {   int ret;   uint8_t tx[] = {     0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,     ...…

查看全部问答>

反激拓扑的这个反馈是如何实现的,找了很多资料都没有啊……

首先说这个电路是正常运行的,UC2844内部的误差放大器反相端直接接地,反馈直接接到了误差放大器的输出,常规的这种用法都是在COMP端加一个类似上拉电阻的形式,然后与光耦的副边串联,通过控制分压的值来反馈到COMP端,而这里是直接连到光耦的副边 ...…

查看全部问答>