16位二进制数转换

我们用的是s7-400系列cpu,现在想实现一个功能就是把16位带符号二进制数进行高低8位对调。比如
0100 0000 0011 1110 转换成
0011 1110 0100 0000 这种形式,看有没有简单点的法子可以通过程序解决?

问题补充:
请注意我要的是8位转8位,Caw好像只能把16位的数的低八位进行高低交换把

最佳答案

1、应用CAW指令,实现 交换累加器 1 低字中的字节顺序(16 位)。
使用 CAW 指令,可以反转累加器 1 低字中的字节顺序。结果保存在累加器 1的低字中。累加器 1 的高字和累加器 2 保持不变。
例如:
L MW10// 将存储字 MW10 的数值装入累加器 1。
CAW// 反转累加器 1 低字中的字节顺序。
T MW20// 将结果传送到存储字 MW20。
2、详见文档:
《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf
3、问题补充:请注意我要的是8位转8位,Caw好像只能把16位的数的低八位进行高低交换?
看看上传的图片,CAW指令能够满足你的要求!
“现在想实现一个功能就是把16位带符号二进制数进行高低8位对调”?
注意,高低8位就是高低字节!

图片说明:

16位二进制数转换  

提问者对于答案的评价:
试过了,没多大问题,因为我用不上图片里的A B这两个区间。呵呵

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248829.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日
下一篇 2018年12月2日

相关推荐