### keil51中Code Bank(分页代码)原理和实现方式 #### 一、8051程序执行方式及DP-51+程序的运行模式 8051单片机作为一款经典的微控制器,其程序执行方式是单片机的基本工作方式之一。根据程序的存放位置不同,8051单片机可以执行内部ROM中的程序、外部ROM中的程序,或者同时执行内部和外部ROM中的程序。所有程序的初始执行地址都是从0x0000开始。 8051单片机通过EA管脚来选择程序的执行来源:当EA管脚为高电平时,单片机会从内部ROM开始执行程序;当程序计数器超出内部ROM的地址范围后,则会自动转向外部ROM继续执行。反之,如果EA管脚为低电平,则单片机会直接从外部ROM的0x0000地址开始执行程序。 针对超过64KB的程序空间需求,单片机系统通常采用**代码分页(Code Banking)**的技术来扩展程序空间。这种方式可以有效地解决单片机的寻址限制问题。例如,在广州周立功单片机发展有限公司的DP-51+开发工具中,就扩展了一块512KB的AT29C040A FLASH程序存储器来实现这一点。 #### DP-51+开发工具下的程序运行模式 DP-51+开发工具提供了三种不同的运行模式:LOAD方式、MON方式和RUN方式。 1. **LOAD方式**:这是程序下载模式,通过配套的DPFLASH工具将HEX文件下载到片外的FLASH存储器中。该模式利用单片机内部固化的LOAD程序来实现对片外FLASH的读写、擦除等操作。需要注意的是,内部的LOAD程序不可以被擦除,否则会影响开发板的正常运行。 2. **MON方式**:这是仿真调试模式。在此模式下,需要先使用DPFLASH工具将MON51监控程序下载到FLASH的0x0000~0x3FFF地址空间中。MON51监控程序一方面接收来自Keil C51的调试信息和数据,另一方面负责用户程序的断点设置、代码运行等调试动作,并将相关信息反馈给Keil C51,以完成调试。需要注意的是,用户程序的起始地址必须位于0x4000地址空间之外,以免覆盖MON51程序;此外,用户程序的中断向量也需分配在0x4000之后。 3. **RUN方式**:这是正常的程序运行模式。在此模式下,单片机从0x0000地址开始执行用户程序。如果刚从MON模式转换而来,记得将中断向量分配到0x0000开始的空间中,否则用户的中断程序将无法被执行。 #### 二、代码分页(CODE BANKING)的原理和实现 一个标准的8051器件能寻址64KB的代码空间。对于需要更大程序空间的应用,可以通过代码分页的方式来扩展。代码分页的基本思想是将整个程序空间划分成多个不超过64KB的代码段,通过片选的方式实现在不同代码段之间的跳转。 Keil C51支持代码分页技术,允许开发者管理一个公共区域以及最多32个每个可达64KB的代码页,从而实现2MB的程序切换空间。Keil C51支持的代码分页方式主要有三种: 1. **利用单片机I/O口线**:通常是P1口线,默认情况下用于控制外部程序存储器的选择信号。这种方式通过改变P1口线的状态来实现不同代码页的切换。 2. **利用专用硬件**:例如使用专门的硬件逻辑电路来控制外部程序存储器的选通信号。 3. **软件模拟**:在没有额外硬件支持的情况下,可以通过软件模拟的方式来实现代码分页。这种方法通常涉及修改程序中的某些特定指令,以触发代码页的切换。 通过上述方法,可以有效地扩展8051单片机的程序空间,满足更复杂应用的需求。
- xiaojie2113142014-07-22非常详细 感谢分享
- 温中志2019-07-10文档还行吧,有些地方讲的不太清楚。
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CSP-JS2024第二轮官方测试数据
- 适用于typora编辑器的主题.zip
- chromedriver-win64-132.0.6824.0.zip
- chromedriver-win64-132.0.6823.0.zip
- chromedriver-win64-132.0.6821.2.zip
- petr按照j6中对transformer的处理进行优化,代码及结果
- PandaX是Go语言开源的企业级物联网平台低代码开发基座,支持设备管控,规则链,云组态,可视化大屏,报表设计器,表单设计器等功
- chromedriver-win64-132.0.6821.0.zip
- chromedriver-win64-132.0.6820.0.zip
- 短剧出海,1倍成本+,10倍利润↑