扩大555定时器延时时范围的方法有哪些

博客分类:
使用定时器实现JavaScript的延期执行或重复执行
window对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和window.setInterval。其中前者可以使一段代码在指定时间后运行;而后者则可以使一段代码每过指定时间就运行一次。它们的原型如下:
window.setTimeout(expression,milliseconds);
window.setInterval(expression,milliseconds);其中,expression可以是用引号括起来的一段代码,也可以是一个函数名,到了指定的时间,系统便会自动调用该函数,当使用函数名作为调用句柄时,不能带有任何参数;而使用字符串时,则可以在其中写入要传递的参数。两个方法的第二个参数是milliseconds,表示延时或者重复执行的毫秒数。下面分别介绍两种方法。
1.window.setTimeout方法
该方法可以延时执行一个函数,例如:
&script language="JavaScript" type="text/javascript"&
function hello(){
alert("hello");
window.setTimeout(hello,5000);
&/script&这段代码将使得页面打开5秒钟后显示对话框“hello”。其中最后一句也可以写为:
window.setTimeout("hello()",5000);
读者可以体会它们的差别,在window.setInterval方法中也有这样的性质。
如果在延时期限到达之前取消延执行,可以使用window.clearTimeout(timeoutId)方法,该方法接收一个id,表示一个定时器。这个id是由setTimeout方法返回的,例如:
&script language="JavaScript" type="text/javascript"&
function hello(){
alert("hello");
var id=window.setTimeout(hello,5000);
document.onclick=function(){
window.clearTimeout(id);
&/script&这样,如果要取消显示,只需单击页面任何一部分,就执行了window.clearTimeout方法,使得超时操作被取消。
2.window.setInterval方法
该方法使得一个函数每隔固定时间被调用一次,是一个很常用的方法。如果想要取消定时执行,和clearTimeout方法类似,可以调用window.clearInterval方法。clearInterval方法同样接收一个setInterval方法返回的值作为参数。例如:
//定义一个反复执行的调用
var id=window.setInterval("somefunction",10000);//取消定时执行
window.clearInterval(id);上面的代码仅用于说明怎样取消一个定时执行。实际上在很多场合都需要用到setInterval方法,下面将设计一个秒表,来介绍setInterval函数的用途:该秒表将包括两个按钮和一个用于显示时间的文本框。当单击开始按钮时开始计时,最小单位为0.01秒,此时再次单击按钮则停止计时,文本框显示经过的时间。另外一个按钮用于将当前时间清零。其实现代码如下:
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&
&title& New Document &/title&
&form action="somepage.asp"&
&input type="text" value="0" name="txt1"/&
&input type="button" value="开始" name="btnStart"/&
&input type="button" value="重置" name="btnReset"/&
&script language="JavaScript" type="text/javascript"&
//获取表单中的表单域
var txt=document.forms[0].elements["txt1"];
var btnStart=document.forms[0].elements["btnStart"];
var btnReset=document.forms[0].elements["btnReset"]
//定义定时器的id
//每10毫秒该值增加1
var seed=0;
btnStart.onclick=function(){
//根据按钮文本来判断当前操作
if(this.value=="开始"){
//使按钮文本变为停止
this.value="停止";
//使重置按钮不可用
btnReset.disabled=
//设置定时器,每0.01s跳一次
id=window.setInterval(tip,10);
//使按钮文本变为开始
this.value="开始";
//使重置按钮可用
btnReset.disabled=
//取消定时
window.clearInterval(id);
//重置按钮
btnReset.onclick=function(){
//让秒表跳一格
function tip(){
txt.value=seed/100;
浏览: 145959 次
来自: 北京
--&使用Spring测试套件,Spring容器只会初始 ...
wei5201 写道ynyee 写道@ContextConfi ...
public void
java.lang.NoSuchMethodError: or ...
垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾垃圾
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'S7-200 PLC定时器及计数器的应用和扩展
添加时间:
来源: | 阅读量:1246
提示: 1) PLC定时范围的扩展。PLC的定时范围是一定的,在S7-200中,单个的定时器的最大定时范围为32767S(S为定时精度),当需要设定的定时值超过这个最大值时,可通过扩展的方法来扩大定时器的定时范围。 ①定时器的串级组合。两个定时器的串级组合如图4-21所示。 在图4-21中,T37延时T1=100s,T38延时T2=100s,总计延时T=T1+T2
&&& 1) PLC定时范围的扩展。PLC的定时范围是一定的,在S7-200中,单个的定时器的最大定时范围为32767&S(S为定时精度),当需要设定的定时值超过这个最大值时,可通过扩展的方法来扩大定时器的定时范围。
&&& ①定时器的串级组合。两个定时器的串级组合如图4-21所示。
&&& 在图4-21中,T37延时T1=100s,T38延时T2=100s,总计延时T=T1+T2:200s。由此可见,n个定时器的串级组合,可扩大延时范围为:T=T1+T2+&+Tn。
&&& 图4-21&&& 两个定时器的串级组合
&&& ②定时器与计数器的串级组合。采用图4-22所示的定时器与计数器的串级组合,可更大程度地扩展延时范围。
&&& 在图4-22中,T37为10s自脉冲,即每10s接通1次,作为C0的计数脉冲,当达到C10的设定值1000时,已实现1000&10s= 10000s的延时。
&&& 2) PLC的计数次数的扩展。PLC的单个计数器的计数次数是一定的。在S7 ~200中,单个计数器的最大计数范围是32767,当需要设定的计数值超过这个最大值时,可通过计数器串级组合的方法来扩大计数器的计数范围。
&&& 在图4-23中,C10的设定值为100,C20的设定值为200,当达到C20的设定值时,对输入脉冲10.0的计数次数已达到100&200= 20000次。
&&& 图4-22&&& 定时器与计数器的串级组合
&&& 图4-23&&& 两个计数器的串级组合
(责任编辑: 佚名 )
本文关键字:
免责声明:本文章仅代表作者个人观点,与艾特贸易网无关。本站大部分技术资料均为原创文章,文章仅作为读者参考使用,请自行核实相关内容,如若转载请注明来源:
将功率器件直接串、并联使......
USS_WPM_W(见图10-39)、US......
逻辑控制电路运行的基本条......
日22时40分,......
新闻热点排行stm8s根据定时器写延时函数始终不成功,定时无问题
[问题点数:40分,结帖人zeroqvb]
本版专家分:75
结帖率 90%
CSDN今日推荐
本版专家分:16057
2013年11月 硬件/嵌入开发大版内专家分月排行榜第一
2014年7月 硬件/嵌入开发大版内专家分月排行榜第二
2013年10月 硬件/嵌入开发大版内专家分月排行榜第三2013年6月 硬件/嵌入开发大版内专家分月排行榜第三2013年3月 硬件/嵌入开发大版内专家分月排行榜第三
本版专家分:75
结帖率 90%
本版专家分:75
结帖率 90%
本版专家分:40
本版专家分:40
匿名用户不能发表回复!|
CSDN今日推荐欧姆龙PLC常用基本应用程序举例
> 欧姆龙PLC常用基本应用程序举例
欧姆龙PLC常用基本应用程序举例
前面介绍了欧姆龙公司C系列P型机plc基本指令和功能指令,这些基本指令和功能指令的功能在其它PLC中也都基本具备,只是在各种继电器的数量、地址分配、图形符号、指令格式及通道分配等方面的表达方式上有所不同。只要熟练地掌握了一种PLC的编程指令,结合新接触的其他plc编程手册,了解各种功能的指令表达方式,就能很快地掌握新机型的使用和编程。一、定时器的应用本文引用地址:1、通电延时所谓通电延时,是指满足定时条件时,定时器的设定值作为初值赋给该定时器的当前值寄存器,并开始作减运算,直到当前值减到零时,定时器才动作,使其动合触点闭合,动断触点断开。当定时器的输入断开时,定时器立即复位,即把当前值恢复到设定值,使其动合触点断开,动断触点闭合。上一节中的图6-6即是此种情况。2、失电延时失电延时是指从某个输入条件断开时开始延时,见图1。图1 失电延时电路当0002为ON时,其动合触点闭合,输出继电器0500接通并自锁。当0002变为OFF后,且断开时间达到10s时,0500才由ON变OFF,实现了失电延时。3、双延时所谓双延时定时器,是指通电和失电均延时的定时器。用两个定时器完成双延时控制,如图2所示。当输入0002为ON时,TIM00开始定时,5 s后接通0500并自锁。当0002由ON变OFF时,TIM01开始定时,10 s后,TIM01动断触点断开0500,实现了输出继电器0500在输入0002通电和失电时均产生延时控制的效果。图2 双延时电路4、闪光控制闪光控制是广泛应用的一种实用控制程序,它既可以控制灯光的闪烁频率,又可以控制灯光的通断时间比。当然也可控制其它负载,如电铃、蜂鸣器等。实现闪光控制的方法很多,常用的方法是用两个定时器或两个计数器来实现。  图3所示是用两个定时器编写闪光电路的梯形图程序。图3 通断比不一定相同的闪光电路在途6-60中,当0002为ON时,内部辅助继电器1000线圈接通并自锁,1000的动合触点使0500为ON(灯亮)。2 s后,定时器TIM00动作,其动断触点断开0500(灯灭),其动合触点闭合使TM01开始定时。又经过1 s后,TIM01的动断触点断开时TIM00复位,TIM00的动断触点接通0500,TIM00的动合触点断开使TIM01复位,TIM01的动断触点闭合又使TIM00开始定时。(http://www.diangon.com/版权所有)这样,输出0500所接的负载灯,以接通2 s、断开1 s的频率不停的闪烁,直到0003变ON为止。若要想改变闪光电路的频率,只需要改变两个定时器的时间常数即可。在闪光控制中,如果通断比相同时,可用一个定时器和一个内部辅助继电器实现闪光控制,见图4(a)。如0002为ON,启动定时器TIM01,1 s后TIM01的动合触点闭合,1001的线圈为ON。到下一个扫描周期,TIM01的动断触点断开,使TIM00复位。待扫描到1001的动合触点及TIM01的动断触点时,由于它们均闭合,使1001的线圈继续为ON。再到下一个扫描周期,由于TIM01的动断触点为闭合状态,又重新启动定时器TIM01,1 s后TIM01的动断触点断开,使1001的线圈为OFF,再经过一个扫描周期使TIM01复位,又回到了初始状态。如果0002仍为ON,则开始下一个闪光控制工作周期。另外,借助专用内部辅助继电器和1902来控制输出继电器,也可实现特定频率的闪光控制,如图4(b)所示。图4 通断比相同的闪光电路5、长延时控制PLC定时器的定时范围是一定的,如C系列PLC的单个TIM定时器的定时范围是0~999.9 s。当需要设定的定时值超过此值时,可通过几个定时器的串级组合或定时器与计数器的串级组合来扩大定时器的设定范围。1)定时器的串级组合  图5所示是由两个定时器TIM00和TIM01组成的延时时间为1500 s的延时电路。当0002为ON时,定时器TIM00开始计时,900 s后TIM00的动合触点闭合,定时器TIM01开始计时,又经过600 s,接通输出继电器0500。因此,两个定时器的延时范围为T=T1+T2=900+600=1500s。n个定时器串级组合的延时时间为T=T1+T2+&+Tn。图5 两个定时器的串级组合2)定时器与计数器的串级组合  图6所示是由定时器TIM00和计数器CNT01组成的延时范围为7200 s的延时电路。TIM00是设定值为800 s的具有自复位功能的定时器。当0002为ON时,TIM00开始计时,800s时,TIM00动合触点闭合,CNT01计数一次,下一次扫描时,TIM00的动断触点断开TIM00的线圈,待下一次扫描时,TIM00的动断触点又闭合,TIM00的线圈重新接通。这样作为计数器CNT01计数脉冲输入的TIM00动合触点,每800 s接通一次,每次接通时间为一个扫描周期。TIM00动作9次,即800&9=7200 s后,计数器CNT01动作,其动合触点闭合使0500得电。因此,用一个定时器和一个计数器串级组合可实现的延时时间为定时器和计数器设定值的乘积。图中1815是为了实现开机时对计数器复位。
分享给小伙伴们:
我来说两句……
微信公众号二
微信公众号一posts - 12,&
comments - 1,&
trackbacks - 0
STM32用定时器精确延时的方法(非SysTick)
用TIM2来做延时,延时基准时间1ms,最大可延时65535ms。系统基础频率是8MHz*4=32MHz。
先配置定时器:
&&& TIM_TimeBaseInitTypeDef timInitS&&& timInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;&& // 定时器基准频率32MHz&&& timInitStruct.TIM_Prescaler = 32000;&&&&&&&&&&&&&&&&&&& // 计数频率为1KHz&&& timInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数&&& timInitStruct.TIM_RepetitionCounter = 0;&&& timInitStruct.TIM_Period = 0; // 这个值实际上就是TIMX-&ARR,延时开始时重新设定即可
&&& TIM_TimeBaseInit(TIM2, &timInitStruct);&&& TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 计数溢出时触发中断&&& TIM_Cmd(TIM2, DISABLE);
把定时器的计数频率定为1KHz,这样每1ms计数一次,可以做1ms为基准的延时。
定义延时函数:
&&&& u8 _delayTimeO&&& void delay1ms(u16 delayTime)&&& {&&&&&&& _delayTimeOut = 0;&&&&&&& TIM2-&ARR = delayT
&&& &&& TIM_Cmd(TIM2, ENABLE);&&&&&&& while(!_delayTimeOut)&&&&&&& {&&&&&&& }&&&&&&& TIM_Cmd(TIM2, DISABLE);&&& }
定义计数溢出时的中断函数:
&&& extern u8 _delayTimeO&&& void TIM2_IRQHandler(void)&&& {&&&&&&& if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)&&&&&&& {&&&&&&&&&&&& _delayTimeOut = 1;&&&&&&&&&&&& TIM_ClearFlag(TIM2, TIM_FLAG_Update);&&&&&&&& }&&& }
原来的一个思路是配置定时器每1ms就中断一次(TIMX-&ARR值固定),在延时前将全局的延时计数器清零(该值在中断中不断累加),然后比较计数器值与欲延时的值,超过了就停止,就像这样:
&&& void delay1ms(u16 delayTime)&&& {&&&&&&& _delayTimer = 0; // 延时计数器
&&&&&&& TIM_Cmd(TIM2, ENABLE);&&&&&&& while(_delayTimer & delayTime)&&&&&&& {}&&&&&&& TIM_Cmd(TIM2, DISABLE);&&& }&&& void TIM2_IRQHandler(void)&&& {&&&&&&& if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)&&&&&&& {&&&&&&&&&&&& _delayTimer++;&&&&&&&&&&&& TIM_ClearFlag(TIM2, TIM_FLAG_Update);&&&&&&&& }&&& }
这种做法也可以达到延时的目的,不过在延时的时候会频繁中断,因此这种做法不可取。
阅读(...) 评论()}

我要回帖

更多关于 清除延时定时器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信