首先纠正你的错误,那个数据块共25个地址,而不是20个。其次你假设你第一次某个地址比较相等,结果将MW200清零,那么下一次比较之前你没有往MW200赋值,那岂不是和0比较了?
OPN DB 1 //打开数据块1
//数据块1中的10个数与MW200比较; MW250用来存储比较地址
O(
AN Q 0.0
A(
L DB1.DBW 2
L MW 200
==I
)
JNB _001
L 1
T MW 250
SET
SAVE
CLR
_001: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 4
L MW 200
==I
)
JNB _002
L 2
T MW 250
SET
SAVE
CLR
_002: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 6
L MW 200
==I
)
JNB _003
L 3
T MW 250
SET
SAVE
CLR
_003: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 8
L MW 200
==I
)
JNB _004
L 4
T MW 250
SET
SAVE
CLR
_004: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 10
L MW 200
==I
)
JNB _005
L 5
T MW 250
SET
SAVE
CLR
_005: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 12
L MW 200
==I
)
JNB _006
L 6
T MW 250
SET
SAVE
CLR
_006: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 14
L MW 200
==I
)
JNB _007
L 7
T MW 250
SET
SAVE
CLR
_007: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 16
L MW 200
==I
)
JNB _008
L 8
T MW 250
SET
SAVE
CLR
_008: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 18
L MW 200
==I
)
JNB _009
L 9
T MW 250
SET
SAVE
CLR
_009: A BR
)
O
AN Q 0.0
A(
L DB1.DBW 20
L MW 200
==I
)
= M 0.0
//当开关I0.0接通时,MW200接着上次的地址进行比较
A I 0.0
A(
AN Q 0.0
A(
L MW 250
L 1
==I
)
A(
L DB1.DBW 4
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 2
==I
)
A(
L DB1.DBW 6
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 3
==I
)
A(
L DB1.DBW 8
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 4
==I
)
A(
L DB1.DBW 10
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 5
==I
)
A(
L DB1.DBW 12
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 6
==I
)
A(
L DB1.DBW 14
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 7
==I
)
A(
L DB1.DBW 16
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 8
==I
)
A(
L DB1.DBW 18
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 9
==I
)
A(
L DB1.DBW 20
L MW 200
==I
)
)
= M 0.1
//置位Q0.0
O M 0.0
O M 0.1
S Q 0.0
//若比较结果有相等情况,延时1s后,MW200清零,复位Q0.0
A Q 0.0
= L 20.0
A L 20.0
BLD 102
L S5T#1S
SD T 1
A L 20.0
A T 1
JNB _00a
L 0
T MW 200
SET
SAVE
CLR
_00a: A BR
R Q 0.0