- 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文件,勾选插入
- 点击合并



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/174553.html