西门子S7-300的任意位数据连续循环移位多位的程序

发布时间:2024-03-15
fc的输入数据in(dword)是要移位的双字,bit_no(int)是移位位数。输出数据out(dword)是移位的结果。本文以输入in的低20位数据连续循环移位1~20位为例。tmp1和tmp2分别用来暂存移位后的数据和移位次数剩余值。l1.4是tmp1(ld0)的第20位。
将l1.4改为ld0的其他位,可以改变要移位数据的位数。例如改为l2.4时,被移位数据的位数为12位。
l #in
t #tmp1 //保存被移位的双字
l #bit_no
back: t #tmp2 //保存移位次数剩余值
l 1
l #tmp1
rld //循环移位1位
t #tmp1
a l 1.4
s l 3.0 // tmp1的第20位为1则将最低位置位
an l 1.4
r l 3.0 // tmp1第20位为0则将最低位复位
clr
= l 1.4 //将tmp1第20位清零
l #tmp2 //取移位次数剩余值
loop back //减1后非零则返回
l #tmp1
t #out //输出循环移位的结果
call fc 1
in :=md10
bit_no:=mw14
out :=md16
用十六进制格式监控md10和md16,移位次数mw14的值最好是4的整倍数,监控比较方便。
上一个:怎样关闭显卡的硬件加速(关闭显卡加速怎么设置)_1
下一个:驾照实习期要多久时间

硬度试验及其特点
暖气片老响是怎么回事视频(暖气片老响是什么原因)
rotofl轴流泵的应用领域
win10系统正版多少钱(w10系统多少钱 w10正版系统多少钱)
编码器的选购要点有哪些?
keithley微波开关s46
柃木种植技术
.vip域名的由来以及市场潜力
洞庭碧螺春品质abc
机械硬盘和固态硬盘的差别,机械硬盘跟固态硬盘有什么区别