51单片机延时时间计算和延时程序设计_第1页
51单片机延时时间计算和延时程序设计_第2页
51单片机延时时间计算和延时程序设计_第3页
51单片机延时时间计算和延时程序设计_第4页
51单片机延时时间计算和延时程序设计_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51单片机延时时间计算和延时程序设计一、关于单片机周期的几个概念时钟周期时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12MHz的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。机器周期完成一个基本操作所需要的时间称为机器周期。以51为例,晶振12M,时钟周期(晶振周期)就是(1/12)μs,一个机器周期包含12个时钟周期,一个机器周期就是1μs。晶振频率(MHz)时钟周期(μs)机器周期(μs)121/12161/6211.05921/11.0592≈1.085指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。2.延时常用指令的机器周期指令功能助记符时钟周期机器周期立即数送寄存器MOVRn,#data121立即数送直接字节MOVdirect,#data242空操作NOP121子程序调用返回RET242寄存器减1,不为零则相对转移DJNZRn,rel242直接字节减1,不为零则相对转移DJNZdirect,rel242二、DJNZ指令详解1.指令含义DJNZ:减1条件转移指令这是一组把减1与条件转移两种功能结合在一起的指令,共2条。

DJNZRn,rel ;Rn←(Rn)-1 ;若(Rn)=0,则PC←(PC)+2;顺序执行 ;若(Rn)≠0,则PC←(PC)+2+rel,转移到rel所在位置DJNZ direct,rel ;direct←(direct)-1 ;若(direct)=0,则PC←(PC)+3;顺序执行 ;若(direct)≠0,则PC←(PC)+3+rel,转移到rel所在位置2.DJNZRn,rel指令详解51单片机延时时间计算和延时程序设计全文共6页,当前为第1页。例:51单片机延时时间计算和延时程序设计全文共6页,当前为第1页。MOVR7,#5DEL:DJNZR7,DEL;rel在本例中指标号DEL步骤执行指令R7的值DJNZ转移到DEL/顺序执行指令执行前指令执行后1MOVR7,#5不确定52DEL:DJNZR7,DEL54转移到DEL3DEL:DJNZR7,DEL43转移到DEL4DEL:DJNZR7,DEL32转移到DEL5DEL:DJNZR7,DEL21转移到DEL6DEL:DJNZR7,DEL10顺序执行,循环结束三、51单片机延时时间的计算方法和延时程序设计1.单层循环由上例可知,当Rn赋值为几,循环就执行几次,上例执行5次,因此本例执行的机器周期个数=1(MOVR7,#5)+2(DJNZR7,DEL)×5=11,以12MHz的晶振为例,执行时间(延时时间)=机器周期个数×1μs=11μs,当设定立即数为0时,循环程序最多执行256次,即延时时间最多256μs。2.双层循环1)格式:DELL:MOVR7,#bbDELL1:MOVR6,#aaDELL2:DJNZR6,DELL2;rel在本句中指标号DELL2DJNZR7,DELL1;rel在本句中指标号DELL1注意:循环的格式,写错很容易变成死循环,格式中的Rn和标号可随意指定。2)执行过程51单片机延时时间计算和延时程序设计全文共6页,当前为第3页。51单片机延时时间计算和延时程序设计全文共6页,当前为第2页。例:假设上述循环bb=3,aa=451单片机延时时间计算和延时程序设计全文共6页,当前为第3页。51单片机延时时间计算和延时程序设计全文共6页,当前为第2页。外部循环内部循环执行指令Rn的值DJNZ转移到DEL/顺序执行指令执行前指令执行后DELL:MOVR7,#3R7不确定(R7)=3外部循环第一次DELL1:MOVR6,#4R6不确定(R6)=4内部循环4次DELL2:DJNZR6,DELL2(R6)=4(R6)=3转移到DELL2DELL2:DJNZR6,DELL2(R6)=3(R6)=2转移到DELL2DELL2:DJNZR6,DELL2(R6)=2(R6)=1转移到DELL2DELL2:DJNZR6,DELL2(R6)=1(R6)=0顺序执行,当前循环结束DJNZR7,DELL1(R7)=3(R7)=2转移到DELL1外部循环第二次DELL1:MOVR6,#4(R6)=0(R6)=4内部循环4次DELL2:DJNZR6,DELL2(R6)=4(R6)=3转移到DELL2DELL2:DJNZR6,DELL2(R6)=3(R6)=2转移到DELL2DELL2:DJNZR6,DELL2(R6)=2(R6)=1转移到DELL2DELL2:DJNZR6,DELL2(R6)=1(R6)=0顺序执行,当前循环结束DJNZR7,DELL1(R7)=2(R7)=1转移到DELL1外部循环第三次DELL1:MOVR6,#4(R6)=0(R6)=4内部循环4次DELL2:DJNZR6,DELL2(R6)=4(R6)=3转移到DELL2DELL2:DJNZR6,DELL2(R6)=3(R6)=2转移到DELL2DELL2:DJNZR6,DELL2(R6)=2(R6)=1转移到DELL2DELL2:DJNZR6,DELL2(R6)=1(R6)=0顺序执行,当前循环结束DJNZR7,DELL1(R7)=1(R7)=0顺序执行,当前循环结束3)延时时间计算由上表可知,本循环可以分成两个部分,一个部分是内部循环:包括DELL2:DJNZR6,DELL2,计算机器周期个数=2(DELL2:DJNZR6,DELL2)×4=8。外部循环包括:DELL1:MOVR6,#4执行一次,DELL2:DJNZR6,DELL2执行4次,DJNZR7,DELL1执行一次,机器周期的计算与单层循环相同,计算机器周期个数=1(DELL1:MOVR6,#4)+2(DELL2:DJNZR6,DELL2)×4+2(DJNZR7,DELL1)=11。本例总机器周期个数=外部循环×3+1(DELL:MOVR7,#3)=34。因此:双层循环的总机器周期个数=1(DELL:MOVR7,#bb)+bb【1(DELL1:MOVR6,#aa)+2(DELL2:DJNZR6,DELL2)×aa+2(DJNZR7,DELL1)】=1+bb(3+2aa)。当aa比较大时,如果计算精度要求不高,可以忽略(3+2aa)忽略中的3,同理可忽略1+bb(3+2aa)中的1,此时双层循环的总机器周期个数≈2aa×bb。以机器周期为1μs为例,延时时间≈2aa×bb×1μs,当aa和bb都取0时,延时时间最多≈2×256×256×1μs=0.13s。4)延时程序设计设计延时程序时,只要计算出aa和bb即可。为了使精度高一些,将aa的值尽量变大,忽略(3+2aa)的3作用才会减少。例1:50ms的延时程序设计(机器周期为1μs):50ms=50000μs=2aa×bb×1μs=2×250×100×1μs则延时程序为:DELL:MOVR7,#100DELL1:MOVR6,#250DELL2:DJNZR6,DELL2;rel在本句中指标号DELL2DJNZR7,DELL1;rel在本句中指标号DELL1例2:0.1s的延时程序设计(机器周期为1μs):0.1s=100000μs=2aa×bb×1μs=2×250×200×1μs则延时程序为:DELL:MOVR7,#200DELL1:MOVR6,#250DELL2:DJNZR6,DELL2;rel在本句中指标号DELL2DJNZR7,DELL1;rel在本句中指标号DELL1例3:0.1s的延时程序设计(机器周期为2μs):0.1s=100000μs=2aa×bb×2μs=2×250×100×2μs则延时程序为:DELL:MOVR7,#100DELL1:MOVR6,#250DELL2:DJNZR6,DELL2;rel在本句中指标号DELL2DJNZR7,DELL1;rel在本句中指标号DELL12.三层循环1)格式:DELL:MOVR7,#ccDELL1:MOVR6,#bbDELL2:MOVR5,#aaDELL3:DJNZR5,DELL3;rel在本句中指标号DELL3DJNZR6,DELL2;rel在本句中指标号DELL2DJNZR7,DELL1;rel在本句中指标号DELL1注意:循环的格式,写错很容易变成死循环,格式中的Rn和标号可随意指定。2)执行过程51单片机延时时间计算和延时程序设计全文共6页,当前为第5页。51单片机延时时间计算和延时程序设计全文共6页,当前为第4页。例:假设上述循环cc=2,bb=3,aa=451单片机延时时间计算和延时程序设计全文共6页,当前为第5页。51单片机延时时间计算和延时程序设计全文共6页,当前为第4页。外部循环中间循环内部循环执行指令Rn的值DJNZ转移到DEL/顺序执行指令执行前指令执行后DELL:MOVR7,#2R7不确定(R7)=2外部循环第一次DELL1:MOVR6,#3R6不确定(R6)=3中间循环第一次DELL2:MOVR5,#4R5不确定(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=3(R6)=2转移到DELL2中间循环第二次DELL2:MOVR5,#4(R5)=0(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=2(R6)=1转移到DELL2中间循环第三次DELL2:MOVR5,#4(R5)=0(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=1(R6)=0顺序执行,当前循环结束DJNZR7,DELL1(R7)=2(R7)=1转移到DELL1外部循环第二次DELL1:MOVR6,#3R6不确定(R6)=3中间循环第一次DELL2:MOVR5,#4R5不确定(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=3(R6)=2转移到DELL2中间循环第二次DELL2:MOVR5,#4(R5)=0(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=2(R6)=1转移到DELL2中间循环第三次DELL2:MOVR5,#4(R5)=0(R5)=4内部循环4次DELL3:DJNZR5,DELL3(R5)=4(R5)=3转移到DELL3DELL3:DJNZR5,DELL3(R5)=3(R5)=2转移到DELL3DELL3:DJNZR5,DELL3(R5)=2(R5)=1转移到DELL3DELL3:DJNZR5,DELL3(R5)=1(R5)=0顺序执行,当前循环结束DJNZR6,DELL2(R6)=1(R6)=0顺序执行,当前循环结束DJNZR7,DELL1(R7)=1(R7)=0顺序执行,当前循环结束3)延时时间计算由上表可知,本循环可以分成三个部分内部循环包括DELL3:DJNZR5,DELL3,内部循环计算机器周期个数=2aa。中间循环一次包括:DELL2:MOVR5,#aa一次+内部循环+DJNZR6,DELL2一次,一次中间循环计算机器周期个数=2aa+3,总的中间循环计算机器周期个数=bb(2aa+3)。外部循环一次包括:DELL1:MOVR6,#bb一次+中间循环+DJNZR7,DELL1一次,一次外部循环计算机器周期个数=bb(2aa+3)+3,总的外部循环计算机器周期个数=cc[bb(2aa+3)+3]。总计算机器周期个数=1(DELL:MOVR7,#cc)+总的外部循环计算机器周期个数=cc[bb(2aa+3)+3]+1如果计算精度要求不高,可以忽略(3+2aa)忽略中的3,同理可忽略3+bb(3+2aa)中的3,cc[bb(2aa+3)+3]+1中的1,此时三层循环的总机器周期个数≈2aa×bb×cc。以机器周期为1μs为例,延时时间≈2aa×bb×cc×1μs,当aa、bb和cc都取0时,延时时间最多≈2×256×256×256×1μs≈33.55s。4)延时程序设计设计延时程序时,只要计算出aa、bb和cc即可。为了使精度高一些,将aa的值尽量变大,其次是bb。例1:1s的延时程序设计(机器周期为1μs):1s=1000000μs=2aa×bb×cc×1μs=2×250

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论