- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
巧用C-51的BANK编译模式.
巧用C-51的BANK编译模式朱咏梅(上海电子信息职业技术学院,上海200000)1引言随着C-51编译器被广泛地应用于51系列单片机软件的开发,大批的开发人员从繁琐的汇编语言编程中解放出来.C-51不仅缩短了软件的开发周期,而且使应用软件具有较好的结构性和可维护性.在使用C-51编译器的应用设计中,大多数程序代码都不超过51系列单片机的最大寻址空间64K,但在实际应用中也有程序代码超出64K的情况.这种情况虽然可以通过更换高档CPU来解决,但在产品批量较大且对CPU性能要求并不高时,不希望使用高档CPU,因为这样会增加产品的成本.那么能否在廉价的51系列单片机中突破代码64K空间的限制而进行产品的开发呢 C-51编译器的BANK模式正是为了解决此问题.作者通过对C-51编译器BANK模式的使用,总结出一套该模式的使用方法.本文对这一使用方法进行说明,并对代码和数据混合使用BANK的特殊用法作了介绍.2BANK的工作方式C-51的BANK模式对应用系统的代码存储器结构有特殊要求.图1为C-51BANK模式下代码存储器的物理结构.代码地址空间的上半部,以重叠BANK0的物理地址空间,硬件设计了n个存储器页面来存储程序代码.在任一时刻BANK0~n中,只能有一个BANK处于激活状态.当BANKi处于激活状态时,其物理地址空间为BankBaseAddr~0xFFFF.只有当BANK处于激活状态时,BANK中的程序代码才可以运行.为了寻址任意BANK中的过程代码,C-51编译器为过程调用生成了如下的BANK地址:Base地址是可变的,但为译码方便,一般选为8000H.当某过程调用任一不在同一BANK中的其它过程时,BANK地址中的BANKNUMBER被送到切换BANK的译码电路,而16位的偏移地址被送往地址总线,从而实现不同BANK中的过程调用.下半部分的代码空间没有作BANK处理,它被称为ROOTBANK.这是因为C-51编译器仅对过程调用产生BANK地址,而对于过程调用之外的所有其它部分如CONST等不产生BANK地址,ROOTBANK即用来存放这部分代码.除此之外,ROOTBANK一般还用来存放下列代码:C-51的库函数,所有的变量初始化数据,中断服务程序代码,CSTARTUP代码.编译器总是以NONBANK方式对这一类代码进行操作.3使用C-51BANK模式的步骤假设软件已经按C-51的大模式进行了设计,那么为了使用C-51的BANK模式,要进行以下3个步骤的工作.3.1设计硬件C-51的BANK模式需要硬件来支持.硬件必须设计适当的译码电路来支持存储器的页面结构.尽管C-51编译系统可支持256个存储器BANK页面,但一般的应用系统4个~8个存储器页面即可满足设计要求.在确定了所需存储器页面的个数后,BANK页面的译码地址位也就确定了.假设译码的地址为n位,那么n与BANK页面数的关系满足式(1).2n≥最大所需的BANK页面数n取最小值(1)支持页面结构存储器的译码电路,因使用存储器芯片的空间大小和片数多少的不同而不同.对于n位译码地址的锁存,则有两种方法,最为简单的方法是直接使用CPU多余的口线,若没有多余的口线可用,则需要使用第二种方法,即扩展锁存器对BANK译码地址进行锁存,这时锁存器的锁存地址既可以使用外部RAM空间译码产生,也可以用外部ROM空间译码产生,如使用ROM空间译码产生,要注意地址不能与代码可能占用的地址空间冲突.3.2写BANK模式的源程序C-51BANK模式下的源程序与大模式下的源程序没有太大区别,只是在BANK模式下要注意以下几点:(1)合理规划代码空间规划代码空间就是决定哪一部分代码放在ROOTBANK中,哪一部分代码放在BANK中.前面已经提到,有几种类型代码是必须放在ROOTBANK中的,而对于其它代码来说,既可以放在BANK中,也可以放在ROOTBANK,但为了提高系统的运行效率,对经常被调用的公共程序模块,应尽可能放在ROOTBANK中,以减少BANK的切换.而对于用汇编语言编写的程序模块,如果将其放在BANK中,则需要人工在汇编程序中添加对BANK切换的操作,这项工作非常繁琐,因此用汇编语言编写的程序模块,一般也放在ROOTBANK中.(2)检查源程序模块大小任一个C程序模块,在编译时都要生成一个CODE段,而linker不可能把一个模块的CODE分配到多个BANK中,因此每个程序模块的大小都必须小于或等于一个BANK空间,否则就要把一个程序模块分为两个或多个模块.只要不超出BANK的空间,linker可以把多个程序模块的代码放入一个BANK中,由此看出将每个程序模块最小化,便可以充分利用BANK的空间资源.(3)充分利用非BANK的调用
您可能关注的文档
- 左岸厂坝及水垫塘高位自然边坡LB12S35块体悬空排架施工专项安全措施..doc
- 嵌入式课程设计之触摸屏程序设计..doc
- 左上臂神经鞘瘤一例影像分析..doc
- 左安门施工组织设计..doc
- 左摆动杠杆机械加工工艺卡..doc
- 左支座课程设计..doc
- 左支座的机械加工工艺规程及工艺装备设计毕业设计论文..doc
- 左曲轴箱加工工艺及夹具设计..doc
- 左庆超输出轴的数控加工课程设计..doc
- 左玉辉环境学复习资料完整版..doc
- 三年(2021-2023)学考真题分类汇编之第19课资本主义国家的新变化.docx
- 三年(2021-2023)学考真题分类汇编之第2课古代世界的奴隶制帝国.docx
- 三年(2021-2023)学考真题分类汇编之第28课改革开放和社会主义现代化建设的巨大成就.docx
- 三年(2021-2023)学考真题分类汇编之第20课五四运动与中国共产党的诞生.docx
- 三年(2021-2023)学考真题分类汇编之第20课社会主义国家的发展与变化.docx
- 三年(2021-2023)学考真题分类汇编之第16课国家出路的探索与列强侵略的加剧.docx
- 三年(2021-2023)学考真题分类汇编之第26课社会主义建设在探索中曲折发展.docx
- 三年(2021-2023)学考真题分类汇编之第30课新时代中国特色社会主义的伟大成就.docx
- 三年(2021-2023)学考真题分类汇编之第16课亚非拉民族民主运动的高涨.docx
- 三年(2021-2023)学考真题分类汇编之第23课全民族浴血奋战与抗日战争的胜利.docx
文档评论(0)