我在看一个视频得时候,他讲到了用主程序调用功能时候的一个问题。
他在写一个功能FC的时候,定义了两个定时器的形式参数 timer1和 timer2 ,这两个形式参数 timer1和 timer2的数据接口类型都为 IN 形 ,如下图所示
在这两形参 timer1和 timer2 中都定义了时间。然后他在写主程序 OB1 的时候,为这两个形参 timer1和 timer2 分配了两个实参 T20 和T21。如下图所示
但是在OB1里面定义了这两个实参后,他并没有对 OB1 中的这两个实参 T20 和 T21 赋值,或通过程序赋值(比如说利用 MOV 指令来赋值)。然后,当他把程序下载到仿真器里面去的时候,定时器的运行是正常的的。如果 OB1 里面的实参 T20 和 T21 在没有初始值的时候是不是应该为0?如果是这样的话,那么在向 FC 传递参数的时候不是把0传递给了形参 timer1 和 timer2 了吗?但是他在仿真器里面运行的时候定时器的时间值却是正常的。请问这个该怎么理解?
我的理解是在OB1调用FC时,只能先从OB1里面的实参向FC里面的形参传递数据,而他这个例子是现在FC里面先定义了形参 timer1 和 timer2 的时间值(接口参数均为输入 IN 形),然后再在OB1里面的给它对应的管脚分配一个实参T20和T21地址。实参 T20 和 T21 没有被赋初值(初值为0),而形参 timer1 和 timer2 的数据不为0(定时数据是他在编写FC 的时候设定的)这不是与 实参向形参传递参数相矛盾了吗?
请说明这个问题该怎么理解,如果有图最好附上图来讲解,谢谢!!