📄 keilc51 iap.txt
字号:
MCU:C8051F310
bootloader:0x0000-0x1000
AP:0x1000-0x3dff
reserved:0x3dff-0x3fff
1,建立bootloader.c
加入startup.a51
在startup.a51(默认) 里面第120行 加入如下 中断向量 函数地址映射
如下:
ORG 0000BH /*定时器0*/
LJMP 0100BH /*跳转到用户代码区1000h以后*/
... /*所有中断*/
...
在bootloader.c 中加入跳转到AP区的指令
如下:
((void(code *)(void))0x1100)(); /*0x1100 为startup.a51的地址*/
/*一般放在 中断映射后的地址*/
编译:烧录从0x0000开始
2,建立AP.C 用户代码
加入startup.a51 (可以不加)
在keil->options->c51->interrupt vectors at address: 输入中断映射地址
如下:
interrupt vectors at address: 0x1000
0x1000即AP的code区起始地址 也是中断矢量地址的映射基地址开始。
在keil->options->BL51 Locate 设置如下
定义 code Rang 0x1000-0x3dff
CODE: 输入 ?C_C51STARTUP(1100H) /*需要和bootloader中的跳转地址一致*/
/*只需要定位好这个地址*/
/*这样所有的中断函数都不需要再次定位*/
编译:烧录的时候 从0x1000 开始烧 即第7块开始
两个代码烧录完,复位就可以运行
3,bootloader区串口等下载 不能出现中断函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -