8051 code bank 原理介绍

时间:2024-03-18 18:28:41

8051 code bank 原理介绍

一个标准的8051器件能寻址64KB的代码地址空间。对于超过64KB的代码,单片机系统通常采用代码分页(CODE BANKING)的方式来扩展程序空间。

如何扩展:
下面介绍一下一种结合硬件来实现的方法,采用特殊功能寄存器(SFR)的方式。
硬件设置:
硬件上通SFR 操纵port 的bit 来实现。
8051 code bank 原理介绍
软件设置:
新建工程是需要将STARTUP.A51和L51_BANK.A51加进去,其中STARTUP.A51是新建功能是自动添加,L51_BANK.A51是手动添加的,源文件在keil的安装目录lib下(\keil\C51\lib\L51_BANK.A51)。

1、 首先在keil 中勾选上Use Extended Linker(Lx51) instead of BL51
注意想要使用code bank 功能必须要勾选上这一项。
8051 code bank 原理介绍2、 Target 下勾选code banking, 表示支持code banking 功能,大小根据需求设置
8051 code bank 原理介绍到这一步为止Keil 上的设置完成,现在我们要修改L51_BANK.A51

1、先看一下它的配置段, 主要有下面五个变量需要设置:
通常需要修改
B_NBANKS : 指定bank 的数量
B_MODE: 选择bank 切换通过那种方式。
8051 code bank 原理介绍
bank 切换的核心:
主要是两个函数 B_BANK&N 和B_SWITCH&N:
B_BANK&N 的作用时保存一些地址,防止Bank 切换后回不来。
1、保存当前 bank 的地址(C51 会针对多个bank 生成一个地址向量表,来存放B_SWITCH&N 函数, 保存的地址就是这个地址)
2、保存要切换函数地址
8051 code bank 原理介绍

B_SWITCH&N 切换到对应的bank
8051 code bank 原理介绍
下面看一个例子: bank0->bank1->bank0
8051 code bank 原理介绍