发表于:2007-09-06 15:33:00
8楼
' 22202:定时器条件取反(位 0/1),通过200传入子程序0, 25315防止一上电定时器条件就ON从而无法对201设置预置值,DM0:定时器预置值(BCD码 0-9999),通过201传入子程序0
LD 222.02
OR P_First_Cycle
MOV(21) DM0 201
OUTNOT 200.00
' 使用定时器须每个扫描周期调用子程序0,输入200-203对应232-235/输出204-207对应236-239以上通道不得它用 DM1:定时器当前值,通过205从子程序0传出; 22202:定时器状态位,通过204从子程序0传出
LD P_On
MOV(21) DM1 202
MCRO(99) 0 200 204
MOV(21) 205 DM1
AND 204.00
OUT 222.02
' 检验22202是否象普通定时器的状态位接点那样动作.1007会以DM0设定的时间持续ON,OFF
LD 222.02
ANDNOT 10.07
LD 222.02
AND 10.07
KEEP(11) 10.07
' 自复位的定时器0,其运行机制和上面由DM0,DM1,22202组成的定时器运行机制相似,DM10和DM0对应,以字访问的TIM0和DM1对应,以位访问的TIM0和22202对应
LDNOT 222.12
TIMH(15) 000 DM10
AND TIM000
OUT 222.12
' 1006的动作规律和1007的动作规律可比拟对照
LD 222.12
ANDNOT 10.06
LD 222.12
AND 10.06
KEEP(11) 10.06
' 子程序0开始了
SBN(92) 0
' 定时条件不满足定时器当前值被置为预置值
LDNOT 232.00
MOV(21) 233 237
' 定时条件满足每扫描一次,定时器当前值就减去当前扫描时间,如果减至<0时接通定时器到达位,并清0定时器当前值
LD 232.00
CLC(41)
SUB(31) 234 P_Cycle_Time_Value 237
AND P_CY
OUT 236.01
MOV(21) #0 237
' 如果偶然出现定时器当前值被减至0,此处置位定时器到达位
LD P_On
CMP(20) 237 #0
AND P_EQ
OUT 236.02
' 定时到达后从23600输出,并经子程序0调用输出字传出定时器运行结果
LD 236.01
OR 236.02
AND 232.00
OUT 236.00
' 子程序0结束了
RET(93)
END(01)
以上是助记符代码程序,已标有注释