« 第一个单片机汇编小程序单片机并行口结构 »

单片机延时程序分析

分类: 单片机指令和编程 发布: admin 浏览: 日期: 2017年12月25日

单片机程序中的符号R7、R6是代表了一个个的RAM单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。

DELAY: MOV  R7,#250 

D1: MOV  R6,#250  

D2: DJNZ  R6,D2   

DJNZ  R7,D1   

RET       

DELAY: MOV  R7,#250 

D1: MOV  R6,#250  

D2: DJNZ  R6,D2   

DJNZ  R7,D1   

RET       

MOV指令意思是传递数据,说到传递,我们都很清楚,传东西要从一本人的手上传到另一本人的手上,也就是说要有一个接受者,一个传递者和一样东西。

从指令MOV R7,#250中来分析,R7是一个接受者,250是被传递的数,传递者在这条指令中被省略了(注意:并不是每一条传递指令都会省的,事实上大部份数据传递指令都会有传递者)。

它的意义也很明显:将数据250送到R7中去,因此执行完这条指令后,R7单元中的值就应当是250。在250前面有个#号,这又是什么意思呢?

这个#就是用来说明250就是一个被传递的东西本身,而不是传递者。

那么MOV R6,#250是什么意思,应当不用分析了吧。

DJNZ:这是另一条指令,我们来看一下这条指令后面跟着的两个东西,一个是R6,一个是D2,R6我们当然已知是什么了,查一下D2是什么。D2在本行的前面,我们已学过,这称之为标号。

标号的用途是什么呢?

就是给本行起一个名字。

DJNZ指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移,转到什么地方去呢?

可能大家已猜到了,转到第二个参数所指定的地方去(请大家用自已的话讲一下这条语句是怎样执行的)。本条指令的最终执行结果就是,在原地转圈250次。

执行完了DJNZ R6,D2之后(也就是R6的值等于0之后),就会去执行下面一行,也就是DJNZ R7,D1,请大家自行分析一下这句话执行的结果。

最终,DJNZ R6,D2这句话将被执行250*250=62500次,单片机执行这么多次同一条指令干吗?就是为了延时。

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 文雅单片机. Some Rights Reserved.