quote:以下是引用Zane在2012-02-18 07:02:17的发言:
TO : 冬日
给予封精,是对于你勇于交流的鼓励,但并不意味的的程序就是优秀或完美的。
1.你编程的语法有误,你是FC打开2个全局数据块,何来的OPN DI?虽然也能用,但来之无理。
2. L 0 是不能对双字LD 清零的。
3.间接寻址的编程也是极不合理,
4.关于程序,你实现的原理是依次读取故障位寄存器,并存入比较缓存;判断故障寄存器如果不为零则,有故障;如果和比较缓存的比较不一致,则有新报警。这在单一报警的情况下是正确的,但在多报警的情况下,如报警寄存器的值由1111 1111 1111 1111 变为 0111 1111 1111 1111时,依然会产生一个新报警,而这时应该是消除了一个报警。
解释一下:
1,不用DI我不知道该怎么同时打开两个DB进行操作
2,L 0我试验过,是可以清零的。实验方法很简单
L W#16#FFFF
T LD0
L 0
T LD0,然后检查LD0即可
3,这样的间接寻址或许看起来很难看,但是比起P#xx,Lar1等等指令,这是我根据指针的数据格式自己想的土办法,我这样的方法很容易理解,至少对我来说是这样的,能抓老鼠的就是好猫,适合自己的才是最好的。
4,确实有这个问题,得继续改进。