移位寄存器位的用法(一个不易理解的指令)

一、移位寄存器位指令说明

移位寄存器位的用法(一个不易理解的指令)(1)

200 Smart有个移位寄存器指令SHRB,从名称上看它有个字,它是处理一个位状态的指令,它是把一个指定的的状态值移到一个指定长度的移位寄存器内。

特点:

1、 N的长度是l到64位,不论N是多大16或32,是不用操心数据类型的一个指令,都用SHRB指令。

2、 N可正可负,它决定了移位方向,数据类型都是BYTE。

3、 它定义的寄存器长度是可任意定义,长度范围是l到64位。

4、 每来一个扫描驱动EN,是将整个寄存器移动一位。方向由N正负决定,(正向移位 = N,反向移位 = -N)。

因此,根据指令以上特点,我们可以根据的每移动位状态,来顺序控制一些动作,达到顺序控制的目的。

二、参数详解

EN——使能端,必须沿脉冲触发

DATA——数据类型-位-BOOL,是源状态位,就是把它指定的位状态移入寄存器。操作数可指定(I、Q、V、M、SM、S、T、C、L)

S_BIT——指定移位寄存器的最低位(即首位)。数据类型-位-BOOL,操作数可指定(I、Q、V、M、SM、S、T、C、L)

N——指定的寄存器长度和移位方向。(正向移位 = N,反向移位 = -N)。

举例:S_BIT——M12.3,N=8,DATA M0.5则寄存器排列如下

移位寄存器位的用法(一个不易理解的指令)(2)

N=8时,每来一个脉冲,程序首先把---整个寄存器先左移一位,然后把DATA M0.5的位状态移植到最低位M12.3

N=-8时,每来一个脉冲,程序首先把---整个寄存器先右移一位,然后把DATA M0.5的位状态移植到最高位M13.2

最后位的确定方法:

最后字节= {起始字节 (N 起始字节位号-1)/8}-----余数是最后的位号

如上例:{12 (8 3-1)/8}=13----余数2,因此最后是M13.2

三、 编程案例

要求有5个工序,运行时,每间隔5秒执行一个工序,循环执行,要求一启动,就从一工序开始工作,程序如下:

移位寄存器位的用法(一个不易理解的指令)(3)

移位寄存器位的用法(一个不易理解的指令)(4)

移位寄存器位的用法(一个不易理解的指令)(5)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页