这是论坛上一位高手发的程序。
计算当前时间与设定时间相差的天数,然后进行报警和显示。
原理是把设定日期距离1990.1.1的天数计算出来,再把当前天数距离1990.1.1的天数计算出来,两者相减。
其中有一段没有理解。
因为本人编程的主体还是梯形图,对语句表的功能还不是很熟悉,请指点。源程序和说明在附件里。
SET
SAVE
= L 0.1
L #Sp_Year
AD DW#16#FF
T #TempSPyear
L #Sp_Month
AD DW#16#FF
T #TempSPmonth
L #Sp_Day
AD DW#16#FF
T #TempSPday
L #TempSPyear
ITB
T #TempWORD1
L #TempSPmonth
ITB
T #TempWORD2
L #TempSPday
ITB
T #TempWORD3
L #TempWORD1
AW W#16#FF
T DIB [AR2,P#30.0]
L #TempWORD2
AW W#16#FF
T DIB [AR2,P#31.0]
L #TempWORD3
AW W#16#FF
T DIB [AR2,P#32.0] (0) 数值传递到这里好像就不用了
**************************************************************
L DINO (1)这个功能是把块号放到寄存器1里,作用是什么?
T LW 2
TAR2 (2)这里实际意义是什么?是把背景数据块的地址放在这里吗?
+ L#240 (3) 为什么加240?
T LD 4
TAR2 LD 8 (4)总之这里没有看出具体意图。
UC "DT_DATE"
P#L 2.0
P#L 12.0
LAR2 LD 8 (5)AR2的值是多少?
L LW 12
T #TempSP_DATE
L DINO
T LW 2
TAR2
+ L#16 (6)怎么又开始加16了?
T LD 4
TAR2 LD 8
UC "DT_DATE"
P#L 2.0
P#L 12.0
LAR2 LD 8
L LW 12 (7)怎么感觉跟上次调用"DT_DATE"没有区别。
T #Temp_DATE
L #TempSP_DATE
***********************************************************
TAK
-D
T #TempDAY
L L#0
>=D
A #ENABLE
L #TempDAY
L #Sp_Days
= L 0.2
<=D
A L 0.2
JCN A7d0
L #TempDAY
T #DAYS_GET
SET
= #GET_Bit
JU A7d1
A7d0: L 0
T #DAYS_GET
CLR
= #GET_Bit
A7d1: L #TempDAY
L L#0
A #ENABLE
JCN A7d2
L #TempDAY
L L#-1
*D
T #DAYS_OVER
SET
= #OVER_Bit
JU A7d3
A7d2: L 0
T #DAYS_OVER
CLR
= #OVER_Bit
A7d3: CLR
A L 0.1
SAVE
BE
点击此处查看附件
点击此处查看附件