- STC型号:STC8H3K64S4
- Keil uVision V5.20.0.0
- vscode Vision: 1.52.1
- 单片机复位后,程序计数器(PC)的内容为 0000H,从 0000H 单元开始执行程序
- 中断服务程序的入口地址(又称中断向量)也位于程序存储器单元
- 每个中断都有一个固定的入口地址,当中断发生并得到响应后,单片机就会自动跳转到相应的中断入口地址去执行程序
- 外部中断 0(INT0)的中断服务程序的入口地址是 0003H
- 定时器/计数器 0(TIMER0)中断服务程序的入口地址是 000BH
- 外部中断 1(INT1)的中断服务程序的入口地址是 0013H
- 定时器/计数器 1(TIMER1)的中断服务程序的入口地址是 001BH
由于相邻中断入口地址的间隔区间仅仅有 8 个字节,一般情况下无法保存完整的中断服务程序,因此在中断响应的地址区域存放一条无条件转移指令,指向真正存放中断服务程序的空间去执行。
- 000H~002H 前3个字节为主程序入口跳转指令
- 003H~163H 为45个中断的跳转指令,中断号为0~44
- bin文件中,003~163H并不会全部是中断跳转指令,要看你用到的最大中断号, 中断向量表会以最大中断号而截至,如最大中断号为3,中断向量表范围为003H~001BH+2.
- 用户程序只能读写EEPROM区,此区域大小,在下载时设置
- EEPROM一般放置在Flash最后面,以上面0.5K为例,EEPROM 起始地址为FE00~FFFF
- 对非空区域写入值,需要先擦除再写,擦除Flash以0.5K为单元,也就是0x200
eeprom.h
eeprom.c
改写STARTUP.A51
增加中断向量映射,为程序跳转准备
程序地址偏移
为了减少不必要的麻烦,bootloader中尽量不使用中断
printf,非中断实现
以查询的方式,检查发送完成
改变中断向量表
中断向量表范围为0000H-0200H
中断向量表便宜至App最后1K位置,占用0.5k,剩余0.5k可以用作程序参数区
添加,如下图所示:
经过以上操作,编译时就会自动产生bin文件
提取码:yv4x
- 先添加地址靠后的APP的bin文件
- 添加其次靠后的APP,勾选插入
- 最后添加bootloader的bin文件,勾选插入
- 点击合并
到此这篇单片机程序的入口地址是 H。(单片机程序的入口地址是0001h)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/23649.html