下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、keilc51中启动代码详细说明 2006-10-27 18:23:00 | By:CHYB_HSH让我们先来看看STARTUP.A51文件(默认设置)吧!根据源文件中的说明文字,我们很容易分析出STARTUP.A51文件的工作方式和作用!让我们把它先汉化一下看看!$NOMOD51;Ax51宏汇编器控制命令:禁止预定义的8051;-; This file is part of the C51 Compiler package; Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.;-; STARTUP.A51:
2、 This code is executed after processor reset.; STARTUP.A51: STARTUP.A51文件所生成的代码将在单片机复位后被执行!; To translate this file use A51 with the following invocation:;将按照下面的命令行语句调用A51编译器进行编译产生目标文件; A51 STARTUP.A51; To link the modified STARTUP.OBJ file to your application use the following; BL51 invocation:;将按照
3、下面的命令行语句调用BL51连接器把STARTUP.OBJ定位连接到您的程序代码中; BL51 , STARTUP.OBJ ;-; User-defined Power-On Initialization of Memory;自定义上电后需要初始化的储存区域; With the following EQU statements the initialization of memory; at processor reset can be defined:;使用下列EQU伪指令定义初始化的存储区域在单片机复位后定义生效; ; the absolute start-address of IDATA
4、 memory is always 0IDATALEN EQU 80H ; the length of IDATA memory in bytes.; IDATA(间接寻址区)其起始地址固定为0;IDATALEN用于指定需要初始化;的IDATA区长度(以字节为单位)*XDATASTART EQU 0H ; the absolute start-address of XDATA memoryXDATALEN EQU 0H ; the length of XDATA memory in bytes.;XDATA(外部直接寻址区) XDATASTART用于指定需要初始化的XDATA区起始地;址XDA
5、TALEN用于指定需要初始化的XDATA区长度(以字节为单位)*PDATASTART EQU 0H ; the absolute start-address of PDATA memoryPDATALEN EQU 0H ; the length of PDATA memory in bytes.;PDATA(页寻址区)PDATASTART用于指定需要初始化的PDATA区起始地址;PDATALEN用于指定需要初始化的;PDATA区长度(以字节为单位)*; Notes: The IDATA space overlaps physically the DATA and BIT areas of th
6、e; 8051 CPU. At minimum the memory space occupied from the C51; run-time routines must be set to zero.;注释:8051中IDATA区物理上已经包括了DATA区(直接寻址区)以及BIT区 (位寻址区)。C51(库)占用了 最小;化内存空间,运行时程序需要把它设为0;-; Reentrant Stack Initilization;重入堆栈初始化; The following EQU statements define the stack pointer for reentrant; functi
7、ons and initialized it:;下面的EQU语句定义重入函数的堆栈指针并初始化它; Stack Space for reentrant functions in the SMALL model.; SMALL模式下的重入函数的堆栈空间IBPSTACK EQU 0 ; set to 1 if small reentrant is used.;如果再SMALL模式下使用重入则设为1IBPSTACKTOP EQU 0FFH+1 ; set top of stack to highest location+1.;设置堆栈顶最高位置+1; Stack Space for reentran
8、t functions in the LARGE model.; LARGE模式下的重入函数的堆栈空间XBPSTACK EQU 0 ; set to 1 if large reentrant is used.;如果再LARGE模式下使用重入则设为1XBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;设置堆栈顶最高位置+1; Stack Space for reentrant functions in the COMPACT model.; COMPACT模式下的重入函数的堆栈空间PBPSTACK EQU 0 ; s
9、et to 1 if compact reentrant is used.;如果再COMPACT模式下使用重入则设为1PBPSTACKTOP EQU 0FFFFH+1; set top of stack to highest location+1.;设置堆栈顶最高位置+1;-; Page Definition for Using the Compact Model with 64 KByte xdata RAM;使用COMPACT模式时为64KB的XDATA RAM定义页; The following EQU statements define the xdata page used for
10、pdata; variables. The EQU PPAGE must conform with the PPAGE control used; in the linker invocation.;下面的EQU语句定义PDATA变量的使用了XDATA页PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.;如果使用PDATA页则设为1;PPAGE EQU 0 ; define PPAGE number.;定义页号;PPAGE_SFR DATA0A0H ; SFR that supplies uppermost address byte;S
11、FR的最高地址字节; (most 8051 variants use P2 as uppermost address byte); (大多数8051变量要用P2的最高地址字节);-; Standard SFR Symbols;标准SFR符号ACC DATA 0E0HB DATA0F0HSP DATA 81HDPL DATA 82HDPH DATA 83H NAME ?C_STARTUP?C_C51STARTUP SEGMENT CODE?STACK SEGMENT IDATA RSEG ?STACK DS 1 EXTRN CODE (?C_START);外部代码(这个标号将代表用户程序的启始地
12、址) PUBLIC ?C_STARTUP;给外部使用的符号 CSEG AT 0;在code段的0地址处放以下代码(使用AT指令进行绝对地址的定位)?C_STARTUP: LJMP STARTUP1 RSEG ?C_C51STARTUPSTARTUP1:IF IDATALEN 0;如果长度大于1则初始化IDATA MOV R0,#IDATALEN - 1 CLR AIDATALOOP: MOV R0,A DJNZ R0,IDATALOOPENDIFIF XDATALEN 0;如果长度大于1则初始化XDATA MOV DPTR,#XDATASTART MOV R7,#LOW (XDATALEN)
13、IF (LOW (XDATALEN) 0 ;预置初始化时的外循环次数到R6 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;如果长度大于1则初始化PDATA MOV R0,#LOW (PDATASTART) MOV R7,#LOW (PDATALEN) C
14、LR APDATALOOP: MOVX R0,A INC R0 DJNZ R7,PDATALOOPENDIFIF IBPSTACK 0;SMALL模式下使用重入函数时要设置的堆栈EXTRN DATA (?C_IBP) MOV ?C_IBP,#LOW IBPSTACKTOPENDIFIF XBPSTACK 0;COMPACT模式下使用重入函数时要设置的堆栈EXTRN DATA (?C_XBP) MOV ?C_XBP,#HIGH XBPSTACKTOP MOV ?C_XBP+1,#LOW XBPSTACKTOPENDIFIF PBPSTACK 0;LARGE模式下使用重入函数时要设置的堆栈EXTRN DATA (?C_PBP) MOV ?C_PBP,#LOW PBPSTACKTOPENDIF MOV SP,#?STACK-1; This code is required if you use L51_BANK.A51 with Banking Mod
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2025年)南平市松溪县辅警考试公安基础知识考试真题库及参考答案
- 【2025年】新疆公务员考试答案
- 中国传统医学的现代应用与发展趋势
- 城市交通规划与智能交通系统研究报告
- 心理学视角下的社交媒体影响研究
- 新型给药系统在抗糖尿病药物中的应用研究
- (2025年)青岛市市北区网格职员考试题及答案
- 2025年西北大学辅导员招聘笔试试题附答案
- 【2025年】安全员考试题库附答案(完整版)
- 2026湖北黄冈罗田县教育系统面向国内普通高校招聘教师41人备考题库附参考答案详解(轻巧夺冠)
- 注塑部品质基础知识培训课件
- DBJT15-248-2022 建筑工程消防施工质量验收规范
- 浦东新区2024-2025学年七年级上学期期中考试数学试卷及答案(上海新教材沪教版)
- 英语基础语音知识课件
- 2025年高考地理复习突破集训:大题07工业(3大热点角度)解析版
- 实习护士第三方协议书
- 《云南教育强省建设规划纲要(2024-2035年)》解读培训
- 评审专家聘任协议书
- 民宿委托经营管理协议合同书
- 造林劳务合同协议
- 2024-2025学年鲁教版(五四学制)(2024)初中英语六年级下册(全册)知识点归纳
评论
0/150
提交评论