发布于 2011-06-22 20:59:28
5楼
请你把你的程序复制粘贴出来。或者像我下面的,一字一字打出来。
你未明白先赋值再使用的原则。
调用一次当然没有问题。来来去去都是自己的。
请看下面程序。
LD I0.0
O Q0.0
AN I0.1
= Q0.0
这里Q0.0仅为了试验方便而使用输出点。你觉得毫无疑问吧。
这里的Q0.0已经违反了先赋值再使用的原则。
你看“O Q0.0”这一句是在“= Q 0.0”的上面的。所以这就是已经使用过了,再刷新值。
把上面的Q换成L,你看看你的程序里是否有L有以上情况?
还有。
LD I0.0
S L0.0 1
......
LD L0.0
= Q0.0
这里的L0.0同样违反原则。别以为“S L0.0 1”出现在“LD L0.0”前面就没事。其实当I0.0是0的时候就使得“S L0.0 1”形同虚设。
你看看你的程序有没有类似这样的情况?
还有,
LD I0.0
EU
MOVW 32 LW0
.....(完)
还是违反原则。
以上是最常见的三种出错形态。
一定要注意扫描顺序,包括跳转造成的顺序颠倒的影响。总之使用任何L之前,值要毫无疑问地说出来历,才算及格。