单片机清零程序如何写

单片机清零程序如何写,第1张

累加器和位清零可用CLR(如:CLR

A,,,CLR

C)或者直接赋0值(如:mov

a,#00h).还有一种清零就是系统复位,赋位到初始的状态,单片机的RST脚。(当然此种复位有的是零状态(如:PC)。有的是1状态(P0~P3),还有的是不定状态(SBUF)),此种复位可手动也可上电自动,依外部电路而行

正确程序如下:

CLR A

MOV R0, #50H

LOOP:MOV @R0, A

INC R0

CJNE R0, #5AH, LOOP

SJMP $

END

访问外部ram,必须使用movx指令,用16位地址访问外部ram,必须使用dptr寻址,这是第一个要点。

movx @dptr, a 这条指令的寻址方式是固定的,必须使用a,这是第二个要点。

所以想清除内存区域,必须是

clr a

movx @dptr, a

其中dptr 的内容需要连续变化,你的程序里面少了 inc dptr 这一句。

剩下的问题 mov r0, a 和 mov a, r0 的意思无外乎是个简单的保存、恢复a内容的 *** 作。

其实这里用a来控制循环次数不是很理想,随便用一个寄存器就可以做。

mov dptr , #7000h

mov r7, #0 本意是r7 = 256,清除 256字节

clr a

loop:

movx @dptr, a a 的内容始终是0

inc dptr 原来的程序缺少这一句,很关键

djnz r7, loop

ret


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7809126.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存