8051 code bank 原理介绍

8051 code bank 原理介绍

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

如何扩展:
下面介绍一下一种结合硬件来实现的方法,采用特殊功能寄存器(SFR)的方式。
硬件设置:
硬件上通SFR 操纵port 的bit 来实现。
在这里插入图片描述
软件设置:
新建工程是需要将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 功能必须要勾选上这一项。
在这里插入图片描述
2、 Target 下勾选code banking, 表示支持code banking 功能,大小根据需求设置
在这里插入图片描述
到这一步为止Keil 上的设置完成,现在我们要修改L51_BANK.A51

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

B_SWITCH&N 切换到对应的bank
在这里插入图片描述
下面看一个例子: bank0->bank1->bank0
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值