51单片机启动代码详解(一)

在我们使用kei c51创建一个51单片机项目时,会有如下图所示的提示keil创建新项目时,提示是否添加启动文件一般情况下,需要选择“是”。当然,也可以选择不加

大家好,今天小编来为大家解答51单片机启动代码详解(一)这个问题,很多人还不知道,现在让我们一起来看看吧!

keil新建工程时提示是否添加启动文件

通常情况下,您需要选择“是”。当然,你也可以选择不添加。那么,这个启动文件的作用是什么呢?什么情况下需要添加,什么情况下不可以添加?

今天我们就来仔细看看这个启动文件的内容。理解了这个内容后,我们会恍然大悟:“哦,原来是这样啊!”

以下时启动代码原文第一段

$NOMOD51;——————————————————– —— ———————————-;该文件是C51 编译器包的一部分;版权所有(c) 1988 -2005 Keil Elektronik GmbH 和Keil Software, Inc.版本8.01; *** 使用上下文菜单中的配置向导***;——————————— —————- ———————————- ———-; STARTUP.A51: 该代码在处理器复位后执行。要翻译此文件,请使用A51 和以下调用: A51 启动.A51;要将修改后的STARTUP.OBJ 文件链接到您的应用程序,请使用以下命令: Lx51 调用: lx51你的目标文件列表,STARTUP.OBJ控件;———————————————— —– ———————————————————-;用户定义的h 内存上电初始化;用下面的EQU语句初始化内存;处理器复位时可以定义: o IDATALEN: IDATA 内存大小0x0-0x100; i Note: IDATA 存储器的绝对起始地址始终为0; i IDATA 空间在物理上与DATA 和BIT 区域重叠。 IDATALEN EQU 80H; o XDATASTART: XDATA 存储器起始地址0x0-0xFFFF; i XDATA 存储器的绝对起始地址; i XDATA 内存的长度(以字节为单位)。 PDATA 内存以字节为单位。PDATALEN EQU 0H;/h

以下是启动代码第一段的翻译

———————————- – ————————————————-

该文件是C51 编译器包的一部分

版权所有(c) 1988-2005 Keil Elektronik GmbH 和Keil Software, Inc.

8.01版

*** 使用上下文菜单中的配置向导***

51单片机启动代码详解(一)

————————————————– —————————-

STARTUP.A51 中的代码在处理器复位后执行。

使用如下命令行语句调用A51编译生成目标文件。

A51 启动.A51

使用以下命令行语句调用BL51连接器将STARTUP.OBJ目标文件连接到程序代码。

Lx51 调用:

LX51 呼叫

————————————————– —————————-

LX51调用目标文件列表,由STARTUP.OBJ目标文件控制

用户自定义上电后需要初始化的存储区域(初始化RAM区域中的数据)

51单片机启动代码详解(一)

当处理器复位时,使用以下EQU 指令来初始化存储器(RAM 单元)。

IDATALEN:IDATA存储区域的大小为0-256,可以根据自己的选择进行修改。

IDATA的绝对起始地址始终为0

IDATA区涵盖DATA区和BIT区(DATA区(直接寻址区)和BIT区(位寻址区));至少与C51编译器运行库相关的内存空间必须保证为0初始化

注:51系列中data、idata、xdata、pdata的区别:

data: 固定引用0x00-0x7f 之前的128 个RAM。

idata:固定指的是从0x00到0xff的前256个RAM,其中前128个和data的128完全相同,只是因为访问方式不同。

xdata:外部扩展RAM,一般指外部0x0000-0xffff空间。

pdata: 外部扩展RAM 的低256 字节。

需要初始化为0的IDATA内存空间的字节数。IDATALEN只是一个标号(与IDATA不同)。 EQU只是一个类似宏的替换,类似于C语言中的#define uint(unsigned int)。上面的代码导致程序以后遇到IDATALEN时将其替换为80H。 IDATALEN可以定义为自己喜欢的名字如MyDataLen等,之所以使用IDATALEN,一是方便记忆,二是为了表明它与IDATA相关。

51单片机启动代码详解(一)

XDATA存储区起始地址0x0-0xFFFF

XDATA 存储器的绝对起始地址。

XDATA内存空间的绝对起始地址为0,

XDATA 空间的大小

XDATA 空间的长度(以字节为单位)

请注意,xdata 中的字节数被清除为0。该值默认为0。

PDATA空间大小

PDATA内存空间的绝对起始地址

需要初始化为0的PDATA内存字节数

51系列中data、idata、xdata、pdata的区别

用户评论

51单片机启动代码详解(一)
暮光薄凉

终于找到一篇讲清楚51单片机的启动代码了!以前总看不懂论坛那些一大块代码,现在明白了怎么去分析每个步骤,感觉受益匪浅.

    有20位网友表示赞同!

51单片机启动代码详解(一)
孤败

太棒了!这篇文章讲解很详细,从基本概念到具体的代码都解释得很透彻。我马上就要用51单片机做项目,有了这篇教程真是太安心了!

    有17位网友表示赞同!

51单片机启动代码详解(一)
迁心

对学习嵌入式编程的小白来说,这个教程简直就是宝典!语言很平易近人,关键是每个步骤都有清晰的图解,看着就懂了.

    有8位网友表示赞同!

51单片机启动代码详解(一)
陌上花

虽然是 (1) ,但我已经从第一部分就能感受到作者的专业程度。期待后续讲解,希望涵盖一些更实用的应用案例!

    有9位网友表示赞同!

51单片机启动代码详解(一)
又落空

写的确实不错,特别是把启动代码分成不同的模块分析,让我更容易理解整个流程。不过,希望可以再多讲讲汇编指令的含义,感觉有些过于简略了.

    有15位网友表示赞同!

51单片机启动代码详解(一)
把孤独喂饱

看完这篇文字,我真的觉得自己跨进了51单片机的门槛!终于解开启动代码的神秘面纱,接下来就可以开始学习实际编程了!

    有18位网友表示赞同!

51单片机启动代码详解(一)
不离我

这篇文章对新手来说确实很有帮助,但对于熟悉51芯片的开发者来说可能有点过于基础,可以考虑加入一些更深入的内容.

    有19位网友表示赞同!

51单片机启动代码详解(一)
歆久

我感觉文章里缺少了实例讲解,如果能结合一些具体的应用场景演示代码运行的效果,会更加生动有趣.

    有20位网友表示赞同!

51单片机启动代码详解(一)
闷骚闷出味道了

启动代码?我只想直接看项目示例!这篇教程太理论化了,有点枯燥乏味…

    有8位网友表示赞同!

51单片机启动代码详解(一)
龙卷风卷走爱情

作者写得真好,让我对51单片机的学习有了明确方向和目标。我已经迫不及待想要实践一下了!

    有9位网友表示赞同!

51单片机启动代码详解(一)
凉凉凉”凉但是人心

文章里提到的中断函数,我以前都没听过,看来还是缺乏一些电路知识的了解,需要重新学习一遍。

    有20位网友表示赞同!

51单片机启动代码详解(一)
迷路的男人

希望作者能在后续讲解中结合实际项目,更好地展示51单片机的应用能力,这样才能更吸引人!

    有6位网友表示赞同!

51单片机启动代码详解(一)
厌归人

启动代码分析太细致了,看得我头晕脑胀!能不能简化一下,突出重点内容?

    有20位网友表示赞同!

51单片机启动代码详解(一)
?亡梦爱人

虽然文章写的很不错,但我觉得一些关键概念还是不够解释清楚,比如为什么要设置这些中断位寄存器?有什么作用?

    有8位网友表示赞同!

51单片机启动代码详解(一)
有些人,只适合好奇~

51单片机真是太难学了,每次看到那些复杂的汇编指令就头疼,希望能有更直观的学习方式.

    有11位网友表示赞同!

51单片机启动代码详解(一)
掉眼泪

我一直在用STM32,这次尝试学习51单片机感觉差距很大,代码风格和生态也截然不同,希望可以慢慢适应

    有11位网友表示赞同!

51单片机启动代码详解(一)
仰望幸福

文章讲得明白,但感觉篇幅有点短,希望能再详细一点,比如对某些指令的实现原理做个分析

    有17位网友表示赞同!

51单片机启动代码详解(一)
冷风谷离殇

感谢作者分享这种优质的教程,让我更容易理解51单片机的启动过程!这篇文章真的帮到了我!

    有13位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/195842.html

(0)
小su's avatar小su
上一篇 2024年9月25日 下午6:11
下一篇 2024年9月25日 下午6:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注