|
累加器AC0、AC1、AC2、AC3的使用陷阱
编程时很多人习惯使用累加器作为中间变量,比如要把一个BYTE变量值赋给一个子程序的DINT输入参数,通常需要INT、DINT两个中间变量地址,先把BYTE转换成INT,再把INT转换成DINT。如果使用累加器,可以把BYTE变量值MOVE_B给AC0,然后AC0直接赋值给DINT参数。好处是显而易见的。 但是当项目调用了外部库功能子程序的时候,使用累加器就要注意了。 看下面一个例子: 编写一个简单的使用了AC0的子程序,然后生成库,供其它项目调用。
在另外一个项目中调用该库子程序,然后再添加一段使用AC0作为中间变量计算三个数和的程序
编译下载运行后发现,1+2+3的结果赋值给VW10变成了94,多了88,而这个值就是调用的外部库子程序赋值给AC0的值。
综上所述,在调用了不确定是否使用了累加器的外部库子程序的项目中,要避免自己使用的累加器值受到库程序的干扰。 上面程序可以改写成:
运行结果正确
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |