单片机关于STARTUP.A51

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机关于STARTUP.A51相关的知识,希望对你有一定的参考价值。

在keil中 STARTUP.51这个文件要不要包含,我看郭天祥的视频时里面可以不包含这个文件,但是我现在有一个程序没有这个文件下载到单片机中就不能运行,这是怎么回事,STARTUP.51这个文件有什么用,请高手指点指点,

用包含一词好像有点不妥,当在kiel C中新建项目时,会问:
Copy standard 8051 Starup Code to Project Forder and add file to Project?
翻译为:复制8051启动代码到项目并和添加文件到项目?

其实无论您选是还是否,您的代码中都将包含该文件。
该文件的作用是 初始化 内外部 RAM使其清零,另外还初始化SP等。
如果上述提示框您选否,对哪些RAM清零将采用默认的方式。
如果您想改变RAM清零区域(假如希望复位时某些RAM不被清零时会很有用。),您可以选是,这样该文件的一个副本将添加到您的项目,您可以根据需要改写此文件。

其他SP,SAMLL/COMPACT、LARGE模式的重入函数的堆栈和指针的初始化等和RAM的道理是一样的。
参考技术A startup.51文件是初始化程序,对单片机的内存以及堆栈进行初始化。因为内存在上电的时候里面的内容是不确定的,而一些新手总是认为内存的初始状态是0,所以导致程序出现错误。statup.a51文件就是针对你内存的大小,把你的内存初始化为零。还有初始化堆栈指针sp。 参考技术B 很有用啊!STARTUP.51是51单片机的启动代码,而且是地址空间分配的定义。 参考技术C STARTUP.51是51单片机的启动代码。

Keil 8051 STARTUP.A51主要功能

【中文标题】Keil 8051 STARTUP.A51主要功能【英文标题】:Keil 8051 STARTUP.A51 main function 【发布时间】:2021-10-20 14:51:12 【问题描述】:

我在 Keil uVision 中创建了项目。源代码有 STARTUP.a51 汇编文件,带有跳转指令到 main(LJMP ?C_START)。但是项目中的源文件没有 main() 函数的定义。

在这种情况下,如何将控制权转移到应用程序代码中?有没有办法将自定义函数映射到 C_START?它是怎么做的? 注意:代码运行良好。

谢谢

【问题讨论】:

我不熟悉keil项目的生成,但通常你的源代码必须定义main。不然你写的代码怎么控制? 【参考方案1】:

我希望 C_START 是初始化内存然后调用 main() 函数的 C 运行时启动。您可以试验并验证您的代码是否可以运行。

【讨论】:

感谢您的回复。我没有在源文件的任何地方看到 main() 定义。

以上是关于单片机关于STARTUP.A51的主要内容,如果未能解决你的问题,请参考以下文章

51单片机程序执行流程(STARTUP.A51)

51单片机程序执行流程(STARTUP.A51管理Main函数的执行)

求关于51单片机的外文翻译

关于51单片机的外部中断使用方法

关于keil51单片机头文件的详细解释-51单片机头文件reg51.h详解

关于51单片机中串口通信的一些小笔记