累加器指令只能在语句表中使用,用于处理单个或多个累加器的内容(见表3-25)。这些指令的执行与RLO(逻辑运算结果)无关,也不会对RLO产生影响。
表3-25 累加器指令
(1)TAK指令
指令TAK用来交换累加器1和累加器2的内容。
(2)堆栈指令
S7-300的CPU的两个累加器或S7-400的CPU的4个累加器组成一个堆栈,堆栈用来存放需要快速存取的中间运算结果,堆栈中的数据按“先入后出”的原则存取。以S7-400的堆栈为例,PUSH(入栈)指令使堆栈中各层原有的数据依次向下移动一层(见图3-115),栈顶(累加器1)的值保持不变。POP(出栈)指令使堆栈中各层原有的数据依次向上移动一层(见图3-116),累加器4的值保持不变。
图3-115 PUSH指令执行前后(www.xing528.com)
图3-116 POP指令执行前后
进入累加器堆栈指令ENT将累加器3的内容复制到累加器4,累加器2的内容复制到累加器3。离开累加器堆栈指令LEAVE将累加器3的内容复制到累加器2,累加器4的内容复制到累加器3。使用ENT和LEAVE指令可以用累加器3、4来保存中间结果。数学运算指令包含LEAVE指令的功能。
因为可以用累加器之外的地址区来保存中间结果,实际上很少使用堆栈指令。
(3)加、减8位整数指令
字节加指令INC和字节减指令DEC将累加器1的最低字节的内容加上或减去指令中的8位常数(0~255),运算结果储存在累加器的最低字节。累加器1的其他3个字节不变,最低字节和它的相邻字节之间不产生进位。
(4)空指令
程序显示指令“BLD<数字>”、空指令NOP 0和NOP 1并不执行什么功能,也不会影响状态位。“BLD<数字>”指令只是用于编程设备的图形显示。用STEP 7将梯形图或功能块图转换为语句表时,可能会出现BLD指令。指令中的常数<数字>是编程设备自动生成的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。