电子技术应用,Vol.23,1997(12),pp68
突破 64KB 限制的 8051 程序设计
朱民,鲍远律, 张旺生 中国科学技术大学自动化系
摘要: 本文讨论了单片机程序超过 64KB 空间后的软硬件处理. 详细论述了其软件设计思想,
并提供一个可由 ASM51 宏汇编编译,链接的程序示例.
关键词:8051 单片机,区间程序相互调用,程序空间,ASM51
MCS-51 8 位单片机是应用相当广泛的一类单片机.它由 16 位地址线,可访问 64KB 的 程序和数据空间.对于一般应用而言,64KB 的容量已够.但是随着应用复杂度增加和对程 序功能越来越多的要求,64KB 的空间有时就显得不够,必须扩展程序存储器.笔者就遇到 这种情况. 一.硬件设计 程序超过 64KB,一般有两种处理方法.一是更换 CPU,选取访问空间更大的 CPU.但这 样的话,程序往往要重写,费力.第二个方法是再增加一块 EPROM ,占用 8051 的一个 I/O 端口作为片选信号,从而使 8051 能访问的程序空间超过 64KB. 本文所讨论的系统是用一片 EPROM27010 作为程序存储器,用 P1.0 作为 EPROM 的高端 地址线 A16.其硬件概图如下:
8 P0 8 74373 G ALE P2 p1.0 WR RD PSEN 8 8 A0-7 D0-7
8051
27010
A8-15 A16 WR RD OE
二.软件设计 与硬件相比,软件设计难度颇大.P1.0 作为 A16 线,使 8051 可以访问 128KB 的代码, 但程序计数器 PC 值只有 16 位长, 当在程序中改变 P1.0 的状态时 (只有通过改变 P1.0 的状 态,才能访问 128KB 空间),PC 值仅是正常地自增,下一个取指周期中取出的指令将不是 程序地址为:address = (PC+1)处的代码,而取的是地址为:address = (PC+1+10000H) mod
-1-
20000H 处的代码,程序变得不可控制.因此必须对软件进行精心设计,使 128KB 程序都能 正常运行. 我们将 128KB 的 EPROM 划分为如图 1 所示的 A,B,C,D 四个区域,并让 C,D 两区的代 码完全一样.这样当 PC 值介于[0000,3FFF]时,不论 P1.0 的状态如何程序都能正常运行. 也就是说把程序空间分为三块,程序代码空间可达 16KB + 48KB + 48KB = 112KB.
0000 3FFF 4000
C A
10000 13FFF 14000
D B
16KB
C
setb P1.0
clr P1.0
48KB FFFF 1FFFF 图 1
A
48KB 图 2
B
分区之后,C 区调用 A(B)区的代码只要设置好相应的 P1.0 的状态即可;A(B)区调用 C 区的代码不必特殊处理; 区与 B 区之间代码不能直接相互调用, A 必须通过某种机制来连接, 这也是划分 C 区的目的.以 A 区调用 B 区代码为例,要遵循 A-C-B-C-A 的调用准则.这样做 的不足是降低了程序效率. 要正确实现区间程序调用还必须知道被调用程序的入口地址. 一个很自然的想法是在 C 区建立一个地址表,用来存储入口地址,在程序调用前读这个表即可.但是要注意的是:这 个表不能建立在程序区,而应让主程序(C 区程序)读取入口地址并建立在片外数据区.否则 在程序连接(ASM51)时会因有不能连接确定的地址而出错(除非手工填入地址.这很麻烦). 在确定了区间代码调用机制后, 程序的编写变得相对简单些, 但具体的实现还需要一些 小技巧.本文提供一个可实现 A,B 区间相互调用,并由 ASM51 宏汇编编译,连接通过的完 整例子.该例子由 main.asm,a.asm,b.asm 组成,各相应于 C ,A,B 区的代码.main.asm 和 a.asm 编译连接后形成[00000,0ffff]的写入文件;main.asm 和 b.asm 编译连接后形成 [10000,1ffff] 的 写 入 文 件 . main.asm 集 中 了 中 断 处 理 程 序 , 入 口 地 址 读 入 程 序 (get_address), 区间调用转向(go_abroad)和返回程序(go_home). 另外, 划分 a.asm 和 b.asm 时,尽量让它们之间的相关性小,以减少区间代码的相互调用.因为 A,B 区间的 相互调用总是要通过 C 区,付出一定的"过桥费"后实现的. 附程序清单如下: 程序一.main.asm (C 区程序) name main_asm ; public go_abroad ; 页间转换子程序 public ramdph,ramdpl ; data public page1_call_page2,page2_call_page1 ;SRAM 地址, 存储子程序入口地址 NUM equ 20 ; 允许 20 个子程序入口地址 page1_call_page2 xdata 0 page2_call_page1 xdata page1_call_page2+NUM*2
- 单片机原理及应用pdf > 电子技术应用
-
电子技术应用
下载该文档 文档格式:PDF 更新时间:2008-06-01 下载次数:0 点击次数:1文档基本属性 文档语言: Simplified Chinese 文档格式: pdf 文档作者: wjun 关键词: 主题: 备注: 点击这里显示更多文档属性 经理: 单位: nriet 分类: 创建时间: 上次保存者: 修订次数: 编辑时间: 文档创建者: 修订: 加密标识: 幻灯片: 段落数: 字节数: 备注: 演示格式: 上次保存时间:
- 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
- PDF格式下载
- 更多文档...
-
上一篇:MSP430F2 系列 16 位超低功耗单片机模块原理
下一篇:信息技术的应用化教育
点击查看更多关于单片机原理及应用pdf的相关文档
- 您可能感兴趣的
- 单片机应用实例pdf 郭天祥单片机pdf 单片机程序pdf 单片机c语言pdf msp430单片机pdf pic单片机c语言pdf 爱上单片机pdf 51单片机硬件电路pdf 轻松玩转51单片机pdf
- 大家在找
-
- · 国际商法第2版
- · 反刍动物营养学
- · 北京汽车租赁报价
- · 200cc摩托声音
- · 机房环境监控系统方案
- · 74式陈式太极拳
- · 赢在执行力课件
- · 业余无线电论坛
- · 英美文学选读mp3
- · 神经网络模型的优缺点
- · 安全生产三大体系建设
- · 生理解剖学试题及答案
- · rmvb电影下载480p
- · 2012款捷豹xf资料图
- · 电路仿真软件免费下载
- · 温度智能控制系统毕业设计
- · cimatrone8.5安装视频
- · 国贸专业实习日记
- · 北京最新招聘信息
- · 初中英语听力mp3免费
- · www.czda.e21
- · 迟志强为什么坐牢
- · 人体内成分无创光谱检测中测量条件的研究
- · dnf70级宝珠大全
- · 4399com
- · 园林植物遗传育种
- · 插卡u盘音响mp3音箱
- · 数控车床中级工考试
- · 道路工程材料课件预览
- · 小区有线电视设计
- 赞助商链接