您的位置 首页 培训

单片机上电清空RAM区

上电后清空RAM是必须要做的,由于上电后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

endm

;————————

bank1 macro

bs 0x04,6

endm

;———————-clear rams of all banks———————-

clear_all_ram:

mov a,@0x10

mov r4,a

bank0

call clr_ram

bank1

call clr_ram

ret

clr_ram:

clr r0

inc r4

mov a,@0x3f

and a,r4

jbs psw,z

jmp clr_ram

mov a,@0x10

mov r4,a

ret

;——————————————————————-

; 适用于 em78p468 4个bank , 并且自身有bank指令不必宏界说

;——————————————————————-

;———————-clear rams of all banks———————-

clear_all_ram:

mov a,@0x10

mov r4,a

bank 0

call clr_ram

bank 1

call clr_ram

bank 2

call clr_ram

bank 3

call clr_ram

jmp clr_ram_end

clr_ram:

clr r0

inc r4

mov a,@0x3f

and a,r4

jbs psw,z

jmp clr_ram

mov a,@0x10

mov r4,a

clr_ram_end:

ret

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/268362.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部