前言:
此刻各位老铁们对“c语言的计时器”大约比较关怀,同学们都想要了解一些“c语言的计时器”的相关文章。那么小编也在网上收集了一些关于“c语言的计时器””的相关文章,希望朋友们能喜欢,大家快快来学习一下吧!看到一段关于定时器的STL源码,加深了对边沿指令的理解,解读学习一下。
原程序
代码解读
1、CLR
2、L S5T#0MS
3、SE #IN1
给定时器RLO为FALSE的信号,方便后续启动定时器。
4、L #IN0
5、L 9
6、<=I
7、JC M003
当#IN0小于9的时候跳转到M003。
8、L #IN0
9、L 99
10、<=I
11、JC M005
当#IN0小于等于99时,跳转到M005。
12、L #IN0
13、L 999
14、<=I
15、JC M004
当#IN0小于等于999时,跳转到M004。
16、TAK
17、L 9990
18、>I
19、JC M002
当#IN0大于9990时,跳转到M002。
20、L #IN0
21、L 10
22、/I
23、ITB
24、L W#16#3000
25、+I
26、JU M001
当#IN0范围在1000-9990的时候,时间值#IN0/10,时基为10s,相当于输入数据单位为秒。
27、M003: L #IN0
28、L 100
29、*I
30、ITB
31、L W#16#0
32、+I
33、JU M001
当#IN0小于9的时候,#IN0*100,时基为10ms,相当于输入数据单位为秒。
34、M005: L #IN0
35、L 10
36、*I
37、ITB
38、L W#16#1000
39、+I
40、JU M001
当#IN0范围在9-99的时候,#IN0*10,时基为100ms,相当于输入数据单位为1秒。
41、M004: L #IN0
42、ITB
43、L W#16#2000
44、+I
45、JU M001
当#IN0范围在100-999的时候,时间值#IN0,时基为1s,相当于输入数据单位为1秒。
46、M002: L W#16#3999
当#IN0范大于9990的时候,定时器的最长定时时间数值:999*10秒。
47、M001: SET
48、SE #IN1
给定时器RLO为TRUE的信号,启动定时器。SE为扩展脉冲定时器,上升沿启动后开始计时,上升沿会将计时值重置。
程序的功能就是:#IN0的输入为定时时间,小于9990时定时时间为#IN0秒,大于9990时定时时间为9990秒。#IN1为定时器的名,如T1,T2等。
另外程序在每个周期都相当于上升沿会重新启动定时器,监控会发现状态不变,需要在调用的时候控制程序如何扫描。
CLRSE #IN1SETSE #IN1
这段代码相当于给了定时器一个上升沿。
标签: #c语言的计时器