循环移位指令有什么作用?

  循环移位指令将字节、字或双字中的各位向右或向左循环移动N位后,再送给指令的输出单元。循环移位是环形的,即被移出来的位将返回到另一端空出来的位(见图4-18)。
  带进位的右、左循环移位指令各位的数据与进位位一起(16位指令时一共17位)向右(或向左)循环移动n位。
    (1) 16位节日彩灯的循环移位控制设计循环移位的16位彩灯控制程序,移位的时间间隔为1s,首次扫描时用M8002来设置彩灯的初值,X20为OFF时循环右移1位,为ON时循环左移1位。TO用来产生周期为1s的移位脉冲序列,下面是实现上述要求的程序:
    (2) 10位彩灯循环左移
    要求用S7-200的oo.o - oi.1来控制10位彩灯的循环左移,即从Q1.1移出的位要移人oo.o。值得注意的是在owo中,QBO在高字节,QB1在低字节(见图4-20)。10位循环移位的关键是将Q1.1移到Q1.2的数传送到QO.O中。CPU 224的Q1.2虽然不对外输出,但是它的输出过程映像寄存器可以供用户程序使用。如果在设置彩灯初值时令oo.o为1,它会被Q1.2置为0,造成实际点亮的灯比设置的灯少一个的现象。

    (3)循环投切
    假设用S7-200的QO.O - Q0.7来控制自动无功补偿装置投切电容器的8个交流接触器。为了使各交流接触器均衡使用,一般采用循环投切的工作方式,即最先投入的电容器被最先切除。用8位循环移位指令可以实现这一功能。假设按QO.O至Q0.7的顺序投切电容器,当前投入了3组电容器,Q0.2- Q0.4为1,Q0.2最先投入。需要投切电容时,首先将QBO循环左移1位,变为Q0.3- QO.5为1。如果需要切除电容器,将移位前后两个字节的值相“与”,由表4-3可知,“与”运算后仅Q0.3和Q0.4为l,Q0.2被切除。如果需要投入电容器,将移位前后两个字节的值相“或”,由表4-3可知,“或”运算后Q0.2-oo.s为1,所以将投入Q0.5。
本站部分资源是从网上搜集编辑的,若侵犯了您的版权和利益,请发邮件:6461607@qq.com联系我们删除处理!
上一篇:比较指令有哪些形式?
下一篇:逻辑运算指令有什么作用?