单片机,伟福,这个清0程序有问题,帮忙看看,

ORG0000HSJMPMAINORG0030HMAIN:MOVR7,#00HMOVA,#00HMOVR0,#00HD1:MOV@R0,AINCR0DJNZR7,D1SJ... ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV R7,#00H
MOV A,#00H
MOV R0,#00H
D1:
MOV @R0,A
INC R0
DJNZ R7,D1
SJMP $
END
展开
 我来答
yes__mcu
2014-10-20 · TA获得超过923个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:437万
展开全部
MOV @R0,A
INC R0。,。。。。。。。。。因为如果R0 = 06H,执行这条指令之后R0 = 07H,然后循环的时候会将07H清零,也就是R7会清零,此时R0 = 07H,R7 = 00H,当R7再次归零时,R0也走了一个循环,所有R0 = 7
DJNZ R7,D1
要将所有数据区清零,可以用下面的方法
CLR A
MOV R0,A
LOOP:
MOV @R0,A
DJNZ R0,LOOP
。。。。。。。。。。。。
更多追问追答
追问

由于打的字有点多,超过了限制,就截个图片吧,请见谅

追答
51单片机有4组工作寄存器,它们也占用内部RAM地址的,寄存器组和RAM地址分别对应:
R0 - R7
00H - 07H 组0
08H - 0FH 组1
10H - 17H 组2
18H - 1FH 组3
也就是说如果选择工作寄存器组0,那么R0 - R7对应的地址就是00H - 07H,选择组1,那么R0 - R7对应的地址就是08H - 0FH。上电默认是寄存器组0,此时操作R7和地址07H是结果是一样的,只不过指令长度和执行时间不一样。这样应该能明白吧
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
redmoonzpc
2014-10-20 · TA获得超过8725个赞
知道大有可为答主
回答量:3009
采纳率:70%
帮助的人:1056万
展开全部
是有问题,你修改一下循环次数再试试,比如 MOV R7,#200
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
单片机的战斗机
2014-10-20 · 超过31用户采纳过TA的回答
知道答主
回答量:445
采纳率:0%
帮助的人:91.7万
展开全部
我不会汇编的,不好意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式