展开查看
以下是引用zhangli0在2014-07-09 16:42:29的发言 >1楼:SET
SAVE
= L 0.1//L0.1是临时变量(程序块中的temp中的绝对地址),地址是0.1。保存状态到L0.1中。
L #CP_dat_CLULubIntGrse
L 32767
= L 0.2//这个L0.2应该是笔误,不需要写在这里的,直接删除就可以了。或者前面有判断,判断后rlo保存到L0.2
>I
O L 0.2
JCN A7d9
楼上正解以下是完整的STL,不过还是有点不懂,为什么这样
SET
SAVE
= L 20.1
L #CP_dat_CLULubIntGrse
L 0
==I
L #CP_dat_CLULubIntGrse
L 32767
= L 20.2
>I
O L 20.2
JCN A7d0
L 1200
T #tmp_IntervTimeGrseLub
JU A7d1
A7d0: L #CP_dat_CLULubIntGrse
T #tmp_IntervTimeGrseLub
A7d1: CLR
A L 20.1
SAVE
BE
一下是SCL.上面的STL正是通过下面的转换过来的
IF (CP_dat_CLULubIntGrse = 0) // Interval Time = 0 Minutes
OR
(CP_dat_CLULubIntGrse > val_MaxIntervTimeGrseLub) // Interval Time > 32767 Minutes
THEN
tmp_IntervTimeGrseLub := val_DefTimeSliceGrseLub;
ELSE
tmp_IntervTimeGrseLub := CP_dat_CLULubIntGrse;
END_IF;
但是为什么他转换以后不是:
O(
L MW 10
L 32767
>=I
)
O(
L MW 10
L 0
==D
)
= L 0.0
A L 0.0
JNB _001
L MW 12
T MW 10
_001: NOP 0
A L 0.0
NOT
JNB _002
L MW 14
T MW 10
_002: NOP 0
他是怎么实现比较的呢,有点看不懂,最上面的STL语句,请赐教