文章分类

当前位置:首页>技术文章>单片机的延时及时序分析

单片机的延时及时序分析

第一个问题:延时程序分析在上节课中,我们已经知道,程序中的符号 R7、R6 是代表了一个个的 RAM 单元,是用来放一些数据的,下面我们再来看一下其它符号的含义。 DELAY: MOV R7,#250;(6) D1: MOV R6,#250;(7) D2: DJNZ R6,D2;(8) DJNZ R7,D1;(9) RET;

(10) 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,请大家自行分析一下这句话执行的结果。(转去执行 MOV R6,#250,同时 R7 中的值减 1),最终 DJNZ R6,D2 这句话将被执行 250*250=62500 次,执行这么多次同一条指令干吗。

就是为了延时。 一个问题:如果在 R6 中放入 0,会有什么样的结果?第二个问题:单片机时序分析: 上节课中我们已经介绍了延时程序,但这还不完善,因为,我们只知道 DJNZ R6,D2 这句话会被执行 62500 次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。 先提一个问题:我们学校里什么是最重要的?(铃声)校长可以出差,老师可以休息,但学校一日无铃声必定大乱。

整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们可以称之为“时序


© 星光电子技术工作室 2021 All Rights Reserved.
如有任何问题、建议、业务、合作,请联系手机/微信:13713820066