技术文档

单片机 延时原理 单片机系列第五讲 单片机延时程序分析

小编 2024-11-24 技术文档 23 0

单片机系列第五讲 单片机延时程序分析

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

〈单片机延时程序〉

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次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。

先提一个问题:我们学校里什么是最重要的。(铃声)校长能出差,老师能休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一 协调地工作着。这个铃是按一定的时间安排来响的,我们能称之为“时序��时间的次序”。一个由人组成的单位尚且要有一定的时 序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机 要完成的事更复杂,所以它的时序也更复杂。

我们已知,计算机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间 基准,好象我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。

一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶体震荡器,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶体震荡器的单片机,它的机器周期是多少)。

MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才 行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所 谓指令周期就是指执行一条指令的时间。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的, 如DJNZ指令是双周期指令。

下面让我们来计算刚才的延时。首先必须要知道晶体震荡器的频率,我们设所用晶体震荡器为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。

三、复位电路

一、复位方式

⒈ 复位条件

RST引脚保持2个机器周期以上的高电平。

⒉ 复位电路

〈单片机复位电路〉

⒊ 复位后CPU状态

PC: 0000H TMOD: 00H

Acc: 00H TCON: 00H

B: 00H TH0: 00H

PSW: 00H TL0: 00H

SP: 07H TH1: 00H

DPTR:0000H TL1: 00H

P0~P3:FFH SCON: 00H

IP:×××00000B SBUF: 不定

IE:0××00000B PCON: 0×××0000B

任何单片机在工作之前都要有个复位的过程,复位是什么意思呢?它就象是我们上课之前打的预备铃。预备铃一响,大家就自动地从操场、其它地方进入教室了,在 这一段时间里,是没有老师干预的,对单片机来说,是程序还没有开始执行,是在做准备工作。显然,准备工作不需要太长的时间,复位只需要5ms的时间就能 了。如何进行复位呢?只要在单片机的RST管脚上加上高电平,就能了,按上面所说,时间不少于5ms。为了达到这个要求,能用很多种办法,这里供给一种供 参考,见图1。实际上,我们在上一次实验的图中已见到过了。

这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST管脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。

最新电子行业资讯、教程以及开发板样片申请,请关注“云汉电子社区”官方微信公众号ickeybbs ,或者登录云汉电子社区官方QQ群:496780052

电路识图29-定时及延时电路原理分析

一、定时及延时电路的结构特点

定时电路主要的目的是调节时间,在特定的时间点上执行工作;

延迟电路则是延缓执行时间,发出指令后的某一时间段,再执行工作。

在实际的设备中,这两个电路既可以单独使用,又可以结合使用,与不同功能的模块的电路组合,应用在不同领域当中。

1、定时电路的结构与电路分析

有些电子产品,输入执行命令后,需要在计数周期内执行若干次,此时可以通过定时电路实现这一功能,起到调节时间的目的,如定时开关,定时提醒等。

典型的定时电路如下图所示。

这是一个简易定时器,它主要由一片14位二进制串行计数/.分频集成电路IC1和供电电路等组成。IC1内部电路与外围元件R4,R5,RP1,C4组成RC振荡电路。

当振荡信号在IC1内部经14级二分频后,在IC1的3脚输出经8192次(2的13次方)分频信号,也就是说,若振荡周期为T,利用IC1的3脚输出做延时,则延时时间可达8192T,调节RP1可使T变化,从而起到了调节定时时间的目的。

开机时,电源供电经电容C3使IC1清零,随后IC1便开始计时,经过8192T时间后,IC1的3脚输出高电平脉冲信号,使VT1导通,VT2截止,此时继电器K1因失电而停止工作,其触点即起到了定时控制的作用。

电路中的S1为复位开关。若要中途停止定时,只要按动一下S1,则IC1便会复位,计数器便又重新开始计时,电阻R2为C3提供放电回路。

2、延时电路的结构与电路分析

延迟电路在电子产品中的目的是起到暂缓执行控制命令,如延迟启动,延迟关闭等。

典型延迟电路如下图所示。

这是一个延迟电路,该电路中SN74123为双单稳IC,将终端设备的键控输出信号或其它的按键或继电器的输出信号进行延迟,延迟约为5毫秒以上,它可以消除按键触电的抖动。

二、定时及延时电路的分析实例

在实际的电子产品中,定时及延时变换电路应用的十分广泛,根据不同产品的需求,其电路结构多种多样。

1、定时电路的分析实例

1)定时提示电路的实例分析

典型定时提示电路如下图所示。

这是一个定时提示电路,该电路的主题是IC1 CMOS向上计数器电路,内设振荡电路。电源启动后,即为IC1复位,计时器开始工作,经一定电源开关的计数周期(64周期)后,Q7~Q10端陆续输出高电平,当Q7~Q10都为高电平时,定时时间到,VT1导通,蜂鸣器发声,提示到时。

2)有显示功能的定时电路的实例分析

典型有显示功能的定时控制电路如下图所示。

该电路采用数码显示可使人们能直观地了解时间进程和时间余量,并可随意设定定时时间。

该电路中,IC1为555时基电路,它与外围元件组成一个振荡电路。IC2为可预置四位二进制可逆计数器74LS193,它与R2,C3构成预置数为9的减法计数器。IC3为BCD-7段锁存/译码/驱动器CD4511,它与数码管IC4组成数字显示部分。C1和R1,RP1用来决定振荡电路的翻转时间,为了使C1的充放电电路保持独立而互不影响,电路中加入了VD1,VD2。

电路中,在接通电源的瞬间,因电容C3两端的电压不能突变,故给IC2一个置数脉冲,IC2被置数为9.与此同时,C1两端的电压为零且也不能突变,故IC1的2、6脚为低电平,其3脚输出高电平,并为计数器提供驱动脉冲。IC2德尔13脚输出脉冲信号的同时输出四位BCD信号,经译码器和驱动电路IC3去驱动数码管IC4。

2、延迟电路的分析实例

1)长时间脉冲延迟电路的实例分析

典型长时间脉冲延迟电路如下图所示。

该电路采用三个晶体管,能延长D触发器的延迟时间,在电容C1上的电压到达单结晶体管T1的转移电平之前,T1仍处于截止状态。延迟时间由R1,C1的时间常数决定。当C1上的电压到达触发电平时T1导通,T2截止,CD4013B的1脚变为低电平。

2)延时熄灯电路的实例分析

典型延时熄灯电路如下如所示。

该电路中,接通按钮开关S瞬间,由于CD4541的Q,/QSEL端接高电平,使IC1德尔8脚输出高电平,VT晶体管饱和导通,继电器KS1吸合,照明供电电路处于自保持状态。经延时5分钟后,CD4541的8脚输出变为低电平,继电器KS1释放,照明灯断电熄灭。

相关问答

单片机 微秒 延时 怎么设置?

1.可以用_nop_()函数来实现微秒级的延时。2._nop_();//直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶...

单片机 编程里控制LED灯一闪一灭的 延时 语句工作 原理 是什么?

单片机每执行一天机器码/语句,都是需要时间的。有机器周期,指令周期,时钟周期之分。那么单片机要延时就很简单了。就是做一些无关紧要的指令来达到消耗时间延...

单片机 delay函数延迟时间计算,delay(80);为什么是600us左右?

只有汇编语言才能得到精确的时间。C编译成汇编时,不同的编译器,不同的编译策略都会使最终的程序不一样。如果短时间的延时,可以利用_nop_()来控制,如果是长...

求助: 单片机 C语言中 延时 程序怎么样计算?-ZOL问答

这个程序的延时多少要看你的时钟芯片的大小!一般的如果你用的是12M的晶振的话!voidDelay_ms(unsignedintnms)//ms延时精确的到ms{unsignedint...

下列51 单片机延时 程序中的#250,这个250是肿么来的?哪位给详...

此延时程序无法得到非常准确的延时。有用(0)回复renhanli详情你好,这是一个延时程序,按这个程序来看是进行了两次循环。D2里面的是第一次循环,D1是第二次循...

32 单片机 怎么设置20毫秒的 延时 ?

要实现20毫秒的延时,可以使用定时器来实现。首先需要配置定时器的时钟源和分频系数,使得定时器的时钟频率为1MHz。然后设置定时器的计数值为20000(即20毫秒的...

单片机 外部中断实验(急救车与交通灯)怎么 延时 闪烁?

在单摆的中间放一个红外对管,这样单摆每过一次中间就会有一个脉冲信号。这个脉冲信号连接外部中断,通过中断来统计次数。再用定时器定时1秒,1秒后把中断次数输...

delay 延时 函数计算公式?

简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300msdelay;这得看你的CPU运行一条指令得多久,像单片机89C5...

单片机 1秒钟定时汇编语言怎么编?

可以有两种方法,设晶振为12M,则第一种方法:用延时的方法实现DELAY:MOVR3,#10;延时子程序,延时1秒D1:MOVR4,#200D2:MOVR5,#250D3:DJ...

单片机 编写一个能 延时 500ms的子程序?

delay500ms(){inti,j;i=500;while(i--)for(j=0;j<120;j++);}delay500ms(){inti,j;i=500;while(i--)for(...

猜你喜欢