单片机,伟福,这个清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 展开
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 展开
3个回答
展开全部
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
。。。。。。。。。。。。
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是结果是一样的,只不过指令长度和执行时间不一样。这样应该能明白吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是有问题,你修改一下循环次数再试试,比如 MOV R7,#200
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不会汇编的,不好意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询