打印

一个关于单片机汇编语言的简单问题

[复制链接]
1883|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lp525110627|  楼主 | 2010-11-23 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
NUM    DATA   10H
ORG    0000H
START:
   MOV    NUM,#9H
   MOV    R1,#9H
LOOP:
   MOV    A,NUM
   MOV    DPTR,#TABLE
   MOVC    A,@A+DPTR
   MOV     P1,A
   LCALL   DELAY
   DJNZ   NUM,LOOP
DELAY:
   DJNZ   R1,DELAY
   MOV    R1,#9H
   RET
TABLE:
   DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH  
END

为什么只有当人R1小于9是程序才正常运行,当大于等于9时都不能正常运行呢?而且NUM得值只能小于10才能正常运行呢?
不理解,请高手赐教!!!
 

相关帖子

沙发
lyjian| | 2010-11-23 22:08 | 只看该作者
“DJNZ   NUM,LOOP”后加一句sjmp $。

使用特权

评论回复
板凳
心静自然凉| | 2010-11-24 05:20 | 只看该作者
按理来说你这程序,不管R1为多少,都是错误的,程序不能正常运行,不知道你用的是什么编译器

你这段程序应该是数码管显示吧,程序中有一个很明显的错误,在“DJNZ   NUM,LOOP
”后面没有控制语句,以致于当NUM减到为0时,程序继续往下运行,而没有进入循环显示程序,可以在“DJNZ   NUM,LOOP”后加一句“LJMP START”,另,你的延时程序时间太短,容易造成数码管显示乱码

使用特权

评论回复
地板
lp525110627|  楼主 | 2010-11-25 19:24 | 只看该作者
非常感谢两位高手!而为的回帖让我受益匪浅!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

1

粉丝