首页 理论教育 使用技巧:循环移位与移位指令

使用技巧:循环移位与移位指令

时间:2023-06-27 理论教育 版权反馈
【摘要】:4)指令中n为循环移动的位数。16位指令时n≤16,32位指令时n≤32。图5-64 左循环指令示例图5-65 左循环指令执行情况2)右循环指令。

使用技巧:循环移位与移位指令

1.循环移位指令(左/右)

(1)循环移位指令用法要点

这一类指令共有四条:ROR、ROL、RCR、RCL,循环移位指令使用注意事项如下:

1)这一类指令可以执行16位和32位操作数,执行32位操作数时须在指令前加D。

2)这一类指令可以采用连续执行方式,也可以采用脉冲执行方式。

注:在使用时建议采用脉冲执行方式。

3)操作数[D]是保存循环左/右移数据的字软元件的编号。其对象软元件为KnM、KnY、KnS、T、C、D、R、V、Z。

注:在16位运算中,只能使用K4Y□□□、K4M□□□、K4S□□□。如K4Y010、K4M20、K4S10有效,其他非用K4组合的无效;在32位运算中,只能使用K8Y□□□、K8M□□□、K8S□□□。如K8Y000、K8M50、K8S100有效,其他非用K8组合的无效。

4)指令中n为循环移动的位数。16位指令时n≤16,32位指令时n≤32。

(2)指令动作说明

1)左循环(ROL)指令。图5-64所示为左循环(ROL)指令,X0每次由OFF→ON时,各位数据向左循环移动n位(n=4),最后移出位的状态存入进位标志M8022中。指令执行情况如图5-65所示。当用连续方式执行指令时,循环移位操作每个周期执行一次。

978-7-111-59091-0-Chapter05-99.jpg

图5-64 左循环(ROL)指令示例

978-7-111-59091-0-Chapter05-100.jpg

图5-65 左循环指令执行情况

2)右循环(ROR)指令。图5-66所示为右循环(ROR)指令示例,当X0每次由OFF→ON时,各位数据向右旋转n位(n=4),最后移出位的状态存入进位标志M8022中。指令执行情况如图5-67所示。

978-7-111-59091-0-Chapter05-101.jpg

图5-66 右循环指令示例

978-7-111-59091-0-Chapter05-102.jpg

图5-67 右循环指令执行情况

以下为某舞台灯光控制示例:某舞台灯光系统有16个灯接于K4Y000上,要求当X000为ON时,灯先以正序Y0→Y1→…Y17的顺序每隔1s轮流点亮,当Y017亮后,停止2s,然后以反序Y17→Y16→…Y0的顺序每隔1s轮流点亮,当Y000再次点亮后,停止2.5s,循环上述过程。当X001为ON时,停止工作。

根据要求编写梯形图程序,如图5-68所示。

此例中,如果不是16只灯,如用到K4Y000时,就要考虑在合适的有灯位置停止,否则不能用K4Y000,因为左/右循环指令在16位操作时,只能用K4Y。

2.位左/右移指令

位左/右移指令可使指定长度的位软元件每次左/右移指定长度。

(1)指令表现形式

位左移指令(SFTL)和位右移指令(SFTR)分别如图5-69、图5-70所示。指令使用说明如下:

1)指令只能执行16位操作数。

2)指令可以采用连续执行方式,也可以采用脉冲执行方式,建议采用脉冲执行方式。

3)指令中操作数说明:

①[S•]:右移后在移位数据中保存的起始位软元件编号。操作数种类:X、Y、M、S。

②[D.]:右移的起始位软元件编号。操作数种类:Y、M、S。

n1:移位数据的位数据长度(或者说目标D的数据位数)。

n2:右移的位点数(或者说为源数据的位数)。n2≤n1≤1024。

978-7-111-59091-0-Chapter05-103.jpg

图5-68 灯组移位控制梯形图程序

978-7-111-59091-0-Chapter05-104.jpg

图5-69 位左移指令表现形式

978-7-111-59091-0-Chapter05-105.jpg

图5-70 位右移指令表现形式

(2)功能动作

图5-69所示位左移指令执行情况如图5-71所示,当X000为ON时,对于Y10开始的9位数据(n1=K9),左移3位(n2=K3),移位后,将X10开始的3位(n2=K3)数据传送到Y10开始的3位中。指令在执行过程中,源的内容不会发生改变。

978-7-111-59091-0-Chapter05-106.jpg

图5-71 位左移指令执行情况

3.字左/右移指令

字左/右移指令是将n1个字长的字软元件左/右移n2个字的指令。

(1)指令表现形式

字左移指令(WSFL)和字右移指令(WSFR)的表现形式分别如图5-72、图5-73所示。指令使用说明如下:

978-7-111-59091-0-Chapter05-107.jpg

图5-72 位移指令表现形式

978-7-111-59091-0-Chapter05-108.jpg

图5-73 位右移指令表现形式

1)指令只能执行16位操作数。

2)指令可以采用连续执行方式,也可以采用脉冲执行方式,建议采用脉冲执行方式。

3)指令中操作数说明:(www.xing528.com)

①[S•]:右移后在移位数据中保存的起始字软元件编号。操作数种类:KnX、KnY、KnM、KnS、T、C、D、U□/G□。

②[D.]:右移的起始字软元件编号。操作数种类:KnY、KnM、KnS、T、C、D、U□/G□。

n1:移位数据的字数据长度(或者说目标D的数据位数)。

n2:右移的字点数(或者说为源数据的位数)。n2≤n1≤512。

4)指令中使用组合的字软元件时,源和目标中必须采用相同的位数。图5-73中的K1X0和K1Y0,其中的K1必须相同。

5)传送源[S]和传送目标[D]不能重复,否则传送会发生错误错误代码为K6710。

(2)功能动作

图5-74所示为字左移指令执行情况,当图5-72中的X000为ON时,以目标D20开始的9个字软元件(n1=K9)左移3位(n2=K3),移位后,将D10开始的3位(n2=K3)数据传送到D20开始的3个数据寄存器中。

指令在执行过程中,源的内容不会发生改变。

978-7-111-59091-0-Chapter05-109.jpg

图5-74 字左移指令执行情况

图5-73所示的字右移指令的执行情况如图5-75所示,这里的K1X0和K1Y0对于n来说就是1,也就是一个K1代表4位。

978-7-111-59091-0-Chapter05-110.jpg

图5-75 字右移指令执行情况

4.移位写入/移位读出指令(SFWR/SFRD)

SFWR和SFRD指令分别是控制写入和读出的指令,按照先入先出、后进后出的原则执行。

(1)SFWR指令表现形式

SFWR指令表现形式如图5-76所示。

1)指令使用说明:

①指令只能执行16位操作数。

②指令可以采用连续执行方式,也可以采用脉冲执行方式,建议采用脉冲执行方式。

978-7-111-59091-0-Chapter05-111.jpg

图5-76 SFWR指令表现形式

2)指令中操作数说明:

①[S•]:保存想先入的数据的字软元件编号。操作数种类:KnX、KnY、KnM、KnS、T、C、D、U□/G□。

②[D•]:保存数据并移位的起始字软元件编号(目标中首元件用于指针)。操作数种类:KnY、KnM、KnS、T、C、D、U□/G□。

n:保存数据的点数(用于指针时,为+1后的值)。操作数种类:K、H,2≤n≤512。

④传送源[S]和传送目标[D]不能重复,否则传送会发生错误。

3)功能动作。图5-76所示移位写入指令执行情况如图5-77所示,当X020为ON时,每次脉冲执行时,将D257中的内容传到D258开始的n-1点(100-1=99)数据寄存器中,其中的D257作为指针用来计数,本例中最多能计n-1点(99点)。

由于SFWR采用连续执行方式时,每个运算周期源操作数都依次被保存,因此本指令用脉冲执行方式编程较好。

(2)移位读出指令(SFRD)

SFRD指令表现形式如图5-78所示。

1)指令使用说明:

①指令只能执行16位操作数。

②指令可以采用连续执行方式,也可以采用脉冲执行方式,建议采用脉冲执行方式。

2)指令中操作数说明:

①[S•]:保存想先出数据的起始字软元件编号(最前端为指针,数据从[S•]+1开始)。操作数种类:KnY、KnM、KnS、T、C、D、U□/G□。

②[D•]:保存先出数据的字软元件编号。操作数种类:KnY、KnM、KnS、T、C、D、V、Z、U□/G□。

n:保存数据的点数。操作数种类:K、H,2≤n≤512。

978-7-111-59091-0-Chapter05-112.jpg

图5-77 移位写入指令动作示意图

④传送源[S]和传送目标[D]不能重复,否则传送会发生错误。

978-7-111-59091-0-Chapter05-113.jpg

图5-78 SFRD指令表现形式

3)功能动作:图5-78所示移位读出指令执行情况如图5-79所示,当X021为ON时,每次脉冲执行时,依次将D258~D356中的内容读到D357中。每执行一次,从D258+1开始的n-1点数据逐字右移。

978-7-111-59091-0-Chapter05-114.jpg

图5-79 移位读出指令动作示意图

由于SFRD采用连续执行方式时,每个运算周期数据都依次被保存,因此本指令用脉冲执行方式编程较好。

以下为产品出入库控制示例:某产品生产线,当入库请求信号接通时,通过X0~X17输入产品编号;当出库请求信号接通时,按产品入库先后顺序进行出库并将产品编号显示出来。

分析:产品入库时,通过X0~X17数字式拨码开关,采用MOV指令先将数据送到某寄存器中,再采用移位写入和读出指令可完成控制要求。编制参考程序如图5-80所示,程序执行情况如图5-81所示。

978-7-111-59091-0-Chapter05-115.jpg

图5-80 编制参考程序

978-7-111-59091-0-Chapter05-116.jpg

图5-81 程序执行情况示意图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈