求大神帮忙看下这个51单片机的小程序,满意必给高分! 150

MOVTMOD,#10HMOVTH1,#3CHMOVTL1,#0B0HMOVB,#6MOVR7,#0MOVR0,#0MOVDPTR,#DISTABMOVP2,#0FEHS... MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV B,#6
MOV R7,#0
MOV R0,#0
MOV DPTR,#DISTAB
MOV P2,#0FEH
SETB EA
SETB ET1
SETB TR1
SJMP $
ORG 001BH
LJMP 2000H
AJMP BRT1
BRT1: CJNE R7,#0AH,BRT2
MOV R7,#0
INC R0
MOV A,R0
DIV AB
MOV A,B
INC A
MOVC A,@A+DPTR
MOV P1,A
MOV A,P2
CJNE A,#0DFH,LOOP
MOV A,#0EFH
LOOP: RL A
MOV P2,A
AJMP BRT2
BRT2: MOV TH1,#3CH
MOV TL1,#0B0H
INC R7
RETI
DISTAB:DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,56H,79H,71H
END
这是我51单片机汇编语言的源程序,老师要求是让8位LED数码管循环显示出1~6的数字,时间间隔为0.5秒。我在用keil进行逐步DEBUG的时候,在BRT2后的RETI这步后就DEBUG不了了,回不到SJMP $了。下面显示error65:access violation at C:0x0100 : no 'execute/read' permission,就是无访问权限的意思,不知是程序哪里出了问题,如何修改
展开
 我来答
yyh001123
2014-06-14 · TA获得超过1.4万个赞
知道大有可为答主
回答量:8341
采纳率:66%
帮助的人:6363万
展开全部
RETI是中断返回的。
你这个程序如果不是完整的,就看入口处是不是中断子程序?如果不是,把RETI,更改为RET。
如果程序是完整的,就用这段程序进行debug,那么把RETI,更改为RET。
更多追问追答
追问
刚刚试过把RETI改为RET,还是卡在RET这里回不去啊
追答
如果是完整程序,那地方就不应该有返回。
因为整个程序,就没有调用函数。执行到那里整个程序就结束了。
稍等 我仔细看下,应该是个中断,刚没仔细看,sorry
yhchu
2014-06-14 · TA获得超过239个赞
知道小有建树答主
回答量:127
采纳率:100%
帮助的人:42万
展开全部
指令用错,RETI是中断返回,你这里是子程序调用,应用RET指令
更多追问追答
追问
我没有调用任何子程序啊,LACLL,ACALL指令一条没有,我开头只用了中断
追答
不好意思说错了,不是子程序调用。是跳转,但跳转后面为何跟一条中断返还指令RETI?应在后面放一条AJMP或LJMP跳到您所需要的地方。从程序上看应该跳到BRT1的后面MOV  R7,#0的前面。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式