您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 子程序 >

单片机延时子程序

发布时间:2019-07-29 23:28 来源:未知 编辑:admin

  这个5EH 和5FH的机器周期都是2微秒,谁能给我解释一下 那个算式怎么列出来的 这里面没有机器周期是1微秒的吧 怎么会+1 还*1 下面哪两个 各位也出算式就行了 如果您能 再解释一下更好 分不是问题

  怎么各个答案还不一样啊? 我这个就是8051单片机密码锁的一个程序 上面那答案是老师给的..展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  若算上返回指令 每个结果后面都 +2,这个答案一定是对的,你们老师给你的

  展开全部你可以粗略这样看,在上面的指令中,执行次数最多的是DJNZ rn,那么可以延时就是DJNZ指令执行时间。这里运用了嵌套,所以要×。

  但是当R6减1那么就赋予R5初值10,所以R5又得运行10次,而每减一次1都要重复10次。同理,执行R7减一要重复前面的DJNZ指令10×250次,所以就有了

  延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器

  周期和指令周期的区别,不知道延时程序指令的用法,,本文就此问题从延时程序的基本概念、机器周期和指

  我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如

  在交通灯的控制程序中,需要控制红灯亮的时间持续30秒,就可以通过延时程序来完成。延时程序是如何

  1.机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,

  51单片机的一个机器周期包括12个时钟振荡周期,也就是说如果51单片机采用12MHz晶振,那么执行

  一个机器周期就只需要1μs;如果采用的是6MHz的晶振,那么执行一个机器周期就需要2μs。

  2.指令周期是指单片机执行一条指令所需要的时间,一般利用单片机的机器周期来计量指令周期。

  在51单片机里有单周期指令(执行这条指令只需一个机器周期),双周期指令(执行这条指令只需要两个

  机器周期),四周期指令(执行这条指令需要四个机器周期)。除了乘、除两条指令是四周期指令,其余均

  为单周期或双周期指令。也就是说,如果51单片机采用的是12MHz晶振,那么它执行一条指令一般只需

  1~2微秒的时间;如果采用的是6MH晶振,执行一条指令一般就需2~4微秒的时间。

  现在的单片机有很多种型号,但在每个型号的单片机器件手册中都会详细说明执行各种指令所需的机

  器周期,了解以上概念后,那么可以依据单片机器件手册中的指令执行周期和单片机所用晶振频率来完成

  在单片机编程里面并没有真正的延时指令,从上面的概念中我们知道单片机每执行一条指令都需要一

  定的时间,所以要达到延时的效果,只须让单片机不断地执行没有具体实际意义的指令,从而达到了延时

  如:MOVR7,#80H;将数据80H送到寄存器R7,这时寄存器R7里面存放着80H,就单这条

  循环转移指令功能是将第一个数进行减1并判断是否为0,不为0则转移到指定地点;为0则往下执行。

  如:DJNZR7,KK;将寄存器R7的内容减1并判断寄存器R7里的内容减完1后是否为0,如果

  不为0则转移到地址标号为KK的地方;如果为0则执行下一条指令。这条指令需要2个机器周期。

  三、1秒延时子程序、流程图及时间计算(以单片机晶振为12MHz为例,1个机器周期需要1μs)

  在这里运行这段程序共需998433μs,还差1567μs才达到1S的,所以想要达到完美的1S延时,需

  要在返回指令RET前再添加一些指令让它把1567μs的延时完成。有兴趣的读者可以自己试着添加完成。

  最后补充一点,编写程序时一般将延时程序编写成独立的子程序,而所谓子程序也就是一个实现某个功能

  小提示:循环转移指令(DJNZ)除了可以给定地址标号让其跳转外,还可以将地址标号改成$,这样

  DJNZR7,$;R7内容减1不为0,则再次执行本指令;为0则往下执行,当R7的值改为10

  将以12MHZ晶振为例,详细讲解MCS-51单片机中汇编程序延时的精确算法。

  指令周期:CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的,指令不同,所需的机器周期也不同。

  MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机器周期,即12个时钟周期,所以一条单周期指令被执行所占时间为12*(1/12000000)=1μs。

  由⑥整理出公式(只限上述写法)延时时间=(2*内循环+3)*外循环+3⑦

  详解:DEL这个子程序共有五条指令,现在分别就每一条指令被执行的次数和所耗时间进行分析。

  第一句:MOVR7,#200在整个子程序中只被执行一次,且为单周期指令,所以耗时1μs

  第二句:MOVR6,#125从②看到④只要R7-1不为0,就会返回到这句,共执行了R7次,共耗时200μs

  第三句:DJNZR6,DEL2只要R6-1不为0,就反复执行此句(内循环R6次),又受外循环R7控制,所以共执行R6*R7次,因是双周期指令,所以耗时2*R6*R7μs。

  由⑧整理得:延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+3⑨

  此式适用三层循环以内的程序,也验证了例1中式⑦(第三层循环相当于1)的成立。

  注意,要实现较长时间的延时,一般采用多重循环,有时会在程式序里加入NOP指令,这时公式⑨不再适用,下面举例分析。

  整理得:延时时间=[(3*第一层循环+3)*第二层循环+3]*第三层循环+3⑩

  结论:针对初学者的困惑,对汇编程序的延时算法进行了分步讲解,并就几种不同写法分别总结出相应的计算公式,只要仔细阅读例1中的详解,并用例2、例3来加深理解,一定会掌握各种类型程序的算法并加以运用。

  5)计算机反复执行一段程序以达到延时的目的称为软件延时,单片机程序中经常需要短时间的延时,但是相当一部分人对延时程序很模糊,对延时程序的算法不够了解,在这里我以12MHz晶振和两个经典延时子程序为例,详细分析单片机汇编延时程序。

  时钟周期:也就是振荡周期,以12MHz的时钟脉冲为例,那时钟周期就为(1/12000000)s=(1/12)us;

  指令周期:CPU执行一条指令所需要的时间称为指令周期,指令周期是以机器周期为单位的,不同的指令所需的机器周期不一定相同,可参考51单片机指令速查表。

  由上可得:CPU执行一条单周期指令,需要1us;执行一条双周期指令需要2us。

  6)51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。

  这个5EH和5FH的机器周期都是2微秒,谁能给我解释一下那个算式怎么列出来的这里面没有机器周期是1微秒的吧怎么会+1还*1....

  怎么各个答案还不一样啊?我这个就是8051单片机密码锁的一个程序上面那答案是老师给的..

http://zacharybreder.com/zichengxu/498.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有