ELAN单片机上电清空RAM区.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ELAN单片机上电清空RAM区

上电后清空RAM是必须要做的,由于上电后RAM中的数据处于不确定的状态,会给单片机的运算或者条件判断带来影响,所以是必须必须清空的。清空做的操作也不难,做成子程序后,在程序的开始调用一下就完事了,挺方便。下面分别是 EM78P156 , EM78P259/260 ,EM78P468 等有不同RAM数的单片机的清RAM操作。 编程的基本思想,根据白皮书(ELAN的官方说明书,咱们习惯的叫法)R0是间接寻址,R4是RAM选择,根据这两个的组合就可以完成操作。具体操作和说明可以参考白皮书。 hint: 根据我的理解,这里其实可以很简单的,只需要知道,R4放的是寄存器的地址,R0是放对应的那个寄存器的数据,就OK了,例如 MOV A,@0X10 MOV R4,A MOV A,@0X11 MOV R0,A 根据hint里面说的,R4放地址,看前两句,将 0x10移入R4,对了,表示地址,表示 0x10号寄存器,而后面将0x11移入R0,这个就是数据,放在什么地方?就是放在当前R4指向的寄存器里面,也就是说 0x10地址放的数据是 0x 11,可能开始看有点抽象,不过相信我,那是很简单的东西。 下面的程序都是按照这种思想来做的 EM78P156 的RAM从 0x10 ~ 0x3f ,如果153的话只有 0x2f,修改一下就行了,而259/260 468 的RAM比较多,ELAN 是以bank来处理的,也就是分页处理,所以在清空的时候切换一下bank就可以了,关于bank的操作,看白皮书,说到低就是对R4最高两位的操作而已。 有问题的话欢迎回帖子,或者发我邮件 etual@163.com 当然如果有更好的思想,或者我的程序里面犯错误的话,非常欢迎大家指出,大家共同讨论,共同学习和进步,在下不吝赐教。 ;-------------------------------------------------------------------- ; 适用于 em78p156 153 ; 如果Em78P153S 将 0x3f 改成 0x2f就可以了 ;-------------------------------------------------------------------- clear_all_ram: mov a,@0x10 ; 开始地址 mov r4,a clr_ram: clr r0 ; 清空内容 inc r4 ; 地址加1 mov a,@0x3f ; 是否达到最大的地址 ,bank最大为0x3f and a,r4 jbs psw,z jmp clr_ram ; 是的话推出,不是的话继续循环 ret ;------------------------------------------------------------------- ; 适用于 em78p259/260 等只有2个bank的mcu ; 先做一下宏定义,不同的mcu宏定义可能不同,注意修改一下 ;------------------------------------------------------------------- ;-------------------------macro definition-------------------------- bank0 macro bc 0x04,6 ; R4 的第六位决定是bank0 还是bank1

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档