在具体实现时,采用了另一种形式的栈。由于三菱fx系列plc的ld连续使用不能超过八次,因此采用一个可以位寻址的片内ram字节作为栈空间来存放当前状态值。如果使用栈空间的**高位作为当前状态值,每次压栈就把该字节进行不带进位的循环右移,出栈时反之。在ld x000指令执行后,进栈状态a没有出栈,ld x010指令又进栈保存当前状态值,以前的压栈值a废之不用,即每条与母线相连的ld指令产生压栈值都不出栈。这样避免了因使用pushpop指令用一个字节的空间来保存一位的当前状态值造成的ram利用效率低的问题。 ld x010后的指令执行过程如下:ld x010 把当前状态值h压栈,取x010的状态作为当前状态值i;ld x011把当前状态值i压栈,取x011的状态作为当前状态值j;and x012 把当前状态值j和x012的状态与运算后得到当前状态值k;ld x013把当前状态值k压栈,取x013的状态作为当前状态值l;and x014把当前状态值l和x014的状态与运算后得到当前状态值m;orb 弹出压栈值k和当前状态值m或运算后得到新的当前状态值m;or x015把当前状态值m和x015
上一条:51306975-175工控
下一条:51306803-100
【如果您还没有关注“公司名称”手机网站】