打印

求助:讲下这个的工作原理

[复制链接]
1660|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
semwinliu|  楼主 | 2008-5-30 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天看到这段小程序,理解不了,清高手讲解以下。不胜感激:
DELAY: MOV R5,#20 ;延时子程序,延时0.2秒
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$                 
DJNZ R6,D2                
DJNZ R5,D1                
RET                      
END
 还有$是什么作用啊,书上看不到啊。

相关帖子

沙发
huangqi412| | 2008-5-30 09:30 | 只看该作者

跳到本语句,

djnz r7 ,$   r7减1,如果不为0,跳到本语句,  
也就是r7不断的减1 ,直到为0,则执行一一句,从而起到了延时作用。

r7,r5是外层循环,用来增长延时

使用特权

评论回复
板凳
semwinliu|  楼主 | 2008-5-30 09:39 | 只看该作者

谢谢!huangqi412 !

只是,俺是刚接触这个的。不懂的还很多啊。我想你若方便饿话可不可以更详细的解说下。小的迫切需要啊。
 还有,这样的话我是不是r7赋植足够大的话我就要这一条指令就行了。还要那么多干吗?有什么用意?

使用特权

评论回复
地板
chenczy| | 2008-5-30 09:44 | 只看该作者

R7足够大??

  你所说的R7足够大有多大?最大不过是0FF,还能再大吗?你算一下,就算R7是0FF,又能延时多长?

使用特权

评论回复
5
huangqi412| | 2008-5-30 10:17 | 只看该作者

看你需要多长的延时拉. r7最多0xff,没条指令2个周期

长的时间需要用多层循环...

使用特权

评论回复
6
xwj| | 2008-5-30 10:24 | 只看该作者

LS错,最多不是0xff,而是0

LZ的问题是没搞清楚 各种数据类型的最大取值范围

也就是位数和最大范围的关系

使用特权

评论回复
7
chenczy| | 2008-5-30 10:35 | 只看该作者

给捉到漏洞了

   不说还真没想起是0呢

使用特权

评论回复
8
semwinliu|  楼主 | 2008-5-30 10:39 | 只看该作者

这样理解对吗

使用特权

评论回复
9
semwinliu|  楼主 | 2008-5-30 10:46 | 只看该作者

这样理解对吗

DELAY: MOV R5,#20 ;延时子程序,延时0.2秒
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$                 
DJNZ R6,D2     
DJNZ R5,D1                
RET                      
END
     R6减1,不为0跳到D2。先把R7置248,再执行DINZ R7,$  ,依次循环直到R5 为0时延时结束,对不对?  

使用特权

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

本版积分规则

13

主题

78

帖子

0

粉丝