发布于 2008-03-29 22:33:09
0楼
明显是程序的问题,对局部变量的特性完全没有考虑
带有参数的子程序,只要子程序本身的调用使能位接通了,不管内部代码是否执行,都要进行输入/输出参数映射。
每次进入子程序,局部变量的初值是不定的(被输入参数初始化的除外),当你的内部代码不被执行时,这个不定值退出时要被映射到输出参数指定的变量中
具体到你的程序,进入子程序时,result1:LD11 的初值“随机”,而 MOVR #temp3:LD23, #result1:LD11 的执行条件不满足时,这个随机值被输出了
这种情况你应该考虑到条件不满足时,用明确的代码对 result1 赋值,即要保证不管在什么条件处,都有对 result1 进行赋值的代码被执行
我猜你的 result 变量肯定是 OUT 型,你可以试着将它改为 IN_OUT 型,这样或许你不用改任何代码程序就正常了。理由是 IN_OUT 型的变量在子程序调用时会先用 VD1004 的值初始化 result1:LD11,这样即使你的代码不被执行,退出子程序时再将 result1:LD11 输出到 VD1004 时它还是原来的值保持不变
生命存在的方式只有两种:腐烂或燃烧