单片机程序烧入rom之后怎样执行

单片机程序编译后的.hex文件,烧入rom之后,程序怎样执行起来的?1、hex文件是包含了代码、数据吧?并由编译器(还是链接器)统一分配rom地址?2、程序中的全局变量、... 单片机程序编译后的.hex文件,烧入rom之后,程序怎样执行起来的?

1、hex文件是包含了代码、数据吧?并由编译器(还是链接器)统一分配rom地址?
2、程序中的全局变量、常量、局部变量等数据,是否要载入到ram里去并分配地址?是怎么载入ram的,由谁?何时载入?
3、堆栈如何分配?
4、代码始终是从rom的0x0000地址开始依次执行吗?我看到STC的单片机说中断向量表是存放在rom的0x0003开始,每8个bytes分配给一个中断源做ISR空间,那么程序顺序执行到0x0003这一段地址怎么办?
展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
德昂当
2015-02-12 · TA获得超过2842个赞
知道大有可为答主
回答量:1074
采纳率:100%
帮助的人:759万
展开全部
1,HEX文件包含了代码数据。是由链接器统一分配ROM地址。
2. 程序中的变量,也是在编译连接时,分配了RAM地址。不存在载入的问题,程序指令对变量的操作,就是对RAM地址的操作,地址值存在在指令中。
3. 堆栈在程序初始化时设置堆栈指针。Keil C 会自动设置好。
4. 一般的51单片机代码是从 0000开始执行,这是它的复位地址。也有别的型号的单片机并不一定从0开始执行。程序从0开始执行,但它执行的第一句往往是一个跳转指令(这个Keil C也是自动写好的),跳到另一块地址去执行,而不会顺序执行到 中断的地址的。
你如果是用汇编写程序,这些都是要你自己去分配的,用C写程序,由编译器来完成这些底层操作。
追问
程序中的变量,也是在编译连接时,分配了RAM地址。——链接器还会分配变量的ram地址?
追答
当然,每个变量名代表的就是一个地址。自然要为它分配地址。
简单如 a=5;
实际指令是 把5送入分配给 a 的地址里。MOV 34H,#5 这是汇编指令(比方分给 a 的地址是 34H)。
不知道a 的地址,这条指令就没法运行,应该说没法编译出来。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
lycdl
高粉答主

2015-02-12 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4951万
展开全部
用keilc写程序,上述问题都不用考虑,全由keilc编译时自己处理了,只要按C语言的标准和要求写程序就行。。至于中断向量,也是根据interrupt的定义来自动处理的。
STC单片机,烧入程序后,重新上电就开始执行程序了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式