最近做了一个时间处理的FB块,就是设定时间启动后能自动输出剩余时间,下载到313-5BG04后,运行出现问题,刚开始运行后时间一直不递减,后把上升沿检测的临时变量从TEMP中全换到STAT中后,程序能运行,但并没有按预计的每秒减一,而是每秒减1很多次,不知问题出在哪里,程序如下:已经设定时钟存储位MB0
A #TURE //常闭点
A #IN_START //启动信号
= L 1.0
A L 1.0
JNB _001
L #IN_TIME_MIN //设定值 分钟
T #STAT_1
_001: NOP 0
A L 1.0
JNB _002
L #STAT_2
T #STAT_3
_002: NOP 0
A L 1.0
FP #STAT3
JNB _003
L #IN_TIME_MIN
T #STAT_2
_003: NOP 0
A L 1.0
A(
L #STAT_1
L #STAT_3
<>I
)
JNB _004
L #STAT_1
T #STAT_2
SET
SAVE
CLR
_004: A BR
= #TIME_CHANGE //检测设定值有无修改
A #TURE
= L 1.0
A(
A L 1.0
JNB _005
L #STAT_2
T #STAT_4
SET
SAVE
CLR
_005: A BR
)
JNB _006
L #STAT_4
L L#60
*D
T #STAT_5 //计算出设定秒数
_006: NOP 0
A L 1.0
A #IN_START
FP #STAT1
JNB _007
L #STAT_5
T #STAT_6 //启动时将设定值存入STAT_6
_007: NOP 0
A L 1.0
A #TIME_CHANGE
FP #STAT2
JNB _008
L #STAT_5
T #STAT_6 //设定值修改后将设定值存入STAT_6
_008: NOP 0
A L 1.0
A #IN_START
= L 1.1
A L 1.1
A(
L #STAT_6
L L#0
<>D
)
A M 0.5
FP #STAT4
JNB _009
L #STAT_6
L L#1
-D
T #STAT_6 //这边应该是每秒减一的 实际并非如此 求原因
_009: NOP 0
A(
A(
A(
A L 1.1
JNB _00a
L #STAT_6
L L#60
MOD
T #STAT_7
AN OV
SAVE
CLR
_00a: A BR
)
JNB _00b
L #STAT_6
DTR
T #STAT_8
SET
SAVE
CLR
_00b: A BR
)
JNB _00c
L #STAT_8
L 6.000000e+001
/R
T #STAT_9
AN OV
SAVE
CLR
_00c: A BR
)
JNB _00d
L #STAT_9
TRUNC
T #STAT_10
_00d: NOP 0
A(
A L 1.1
JNB _00e
L #STAT_10
DTR
T #OUT_MIN
SET
SAVE
CLR
_00e: A BR
)
JNB _00f
L #STAT_7
DTR
T #OUT_SEC
_00f: NOP 0
A L 1.1
A(
L #STAT_6
L L#0
==D
)
= #OUT_DONE