发布于 2010-06-10 00:26:02
1楼
刚才复制程序时不小心产生了误操作,结果发现了另外一个观察方法:
NW6不变:
A DB8.DBX 166.0
A I 18.6
= L 20.0
A L 20.0
BLD 102
S DB8.DBX 166.1
A L 20.0
JNB _001
L DW#16#FF010080
L DB8.DBD 164
AD
T DB8.DBD 164
_001: NOP 0
NW7稍微变化:
A DB8.DBX 166.0
FN M 24.2
O DB8.DBX 167.7
= DB8.DBX 167.7
模拟测试时,先将I18.6置1再对DB8.DBX 166.0置1,与先将DB8.DBX 166.0置1在对I18.6置1,NW7的执行结果是不同的,分析结果不变。
如此的话,看来对边沿检测的使用还是要有注意事项的,如果不是这2段程序刚好在一起,如果不是在非常简单的程序中,可能还不会发现这个问题,甚至有可能出现不确定的结果。
以上结果只是我个人的分析,因为不了解边沿检测功能的具体实现过程。如果这个分析有误或者不全面,欢迎各位指正!
刚才搜索的时候搜到这个帖子:http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=3&a_id=323532&s_id=0&num=39#anch
其中的 10、8/9两条说明,边沿指令不受扫描周期影响,只与最近两次执行情况有关。这条与我的分析有冲突,不知道是不是200与300的具体执行是有区别的。也或者是我的测试方法中存在遗漏的地方?
没有个性的签名就别签了。