plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 - 电工屋...

移位指令的详述

一般格式 移位操作符(如SHR) OPR,CNT.

其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。有关OPR和CNT的规定适用于以下所有指令操作。具体格式如下所述。以逻辑右移为例。

如:MOV AX,62H

SHR AX,1

当移位数大于1时,需要先将移位数放进CL中然后再进行移位操作。

如:MOV AL,62H

MOV CL,4

SHR AL,CL

条件标志位

CF(进位标志) = 移入的数值

1 CNT=1时,最高有效位的值发生变化

0 CNT=1时,最高有效位的值不变

移位指令:

SF(符号标志)、ZF(零标志)、PF (奇偶标志)根据移位结果设置,AF(辅助进位标志)无定义

循环移位指令:

不影响 SF、ZF、PF、AF

条件标志位应用于具体的操作数中使用,以下叙述中未详细写明,初学者可不予理会。 SAL(shift arithmetic left) 算术左移

格式:SAL OPR,CNT

含义: 算术左移SAL把目的操作数的低位向高位移,空出的低位补0.

(指将要移位的操作数换成二进制表示方法,如62H为01100010B.移位时只是寻常理解中的将

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
循环移位指令(CIRC)可以用来实现流水灯控制。以下是一个基本的例子,使用S7-1200 PLC,控制8个LED灯的流水灯效果。 1. 首先,在PLC进行硬件配置,将8个LED灯连接到PLC的8个输出口上。 2. 在TIA Portal创建一个新的S7-1200项目,并创建一个程序块。 3. 在程序块定义一个8的变量Byte1,表示8个LED灯的状态。 4. 在主程序使用循环语句,循环执行以下操作: (1) 将Byte1变量左移一,并将最高的值存储到最低。 (2) 将Byte1变量输出到PLC的8个输出口,控制LED灯的亮灭。 (3) 延时一段时间,以控制流水灯的速度。 5. 编译程序,并上传到PLC运行。 下面是一个简单的S7-1200 PLC程序示例,实现8个LED灯的流水灯效果: ``` PROGRAM MainProgram VAR Byte1 : BYTE; //定义8的变量Byte1,表示8个LED灯的状态 END_VAR //主程序 BEGIN //初始化Byte1变量 Byte1 := 1; //循环执行流水灯控制 WHILE TRUE DO //将Byte1变量左移一,并将最高的值存储到最低 Byte1 := CIRC(Byte1, 1); //将Byte1变量输出到PLC的8个输出口,控制LED灯的亮灭 Q0.0 := BYTE_TO_BOOL(Byte1.0); Q0.1 := BYTE_TO_BOOL(Byte1.1); Q0.2 := BYTE_TO_BOOL(Byte1.2); Q0.3 := BYTE_TO_BOOL(Byte1.3); Q0.4 := BYTE_TO_BOOL(Byte1.4); Q0.5 := BYTE_TO_BOOL(Byte1.5); Q0.6 := BYTE_TO_BOOL(Byte1.6); Q0.7 := BYTE_TO_BOOL(Byte1.7); //延时一段时间,以控制流水灯的速度 TON_Delay(IN := TRUE, PT := T#1S); END_WHILE; END_PROGRAM ``` 在上面的程序,CIRC指令将Byte1变量左移一,并将最高的值存储到最低。例如,如果Byte1的值是00000001(二进制),执行CIRC指令后,Byte1的值变成00000010(二进制)。 BOOL_TO_BYTE和BYTE_TO_BOOL函数可以将BOOL类型和BYTE类型之间进行转换。例如,BYTE_TO_BOOL(Byte1.0)将Byte1变量的最低转换为BOOL类型,并将其输出到Q0.0输出口上。 最后,使用TON_Delay指令实现延时一段时间,以控制流水灯的速度。例如,设置PT参数为T#1S,表示延时1秒。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值