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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章