1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
楼主  发表于: 14小时前
图片:
图片:
图片:
图片:
1,D5000原数据值触摸屏随便输入假设1234.5678
2,低16位与操作
3,高16位与操作,怎么把这个值向右移16位呢

移位指令SHR只能跟16位数据
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6650 个
工控威望: 38462 点
下载积分: 17500 分
在线时间: 9869(小时)
注册时间: 2006-09-13
最后登录: 2026-01-29
查看cvlsam的 主题 / 回贴
1楼  发表于: 13小时前
每乘以一次2  左移一位,那么乘以4,就左移2位,依次类推
同样每除以一次2  右移一位,那么除以4,就右移2位,依次类推

Good Luck~
楼主留言:
一个For循环除16次吗
麦克朱
级别: 家园常客
精华主题: 0
发帖数量: 651 个
工控威望: 880 点
下载积分: 400 分
在线时间: 272(小时)
注册时间: 2022-07-11
最后登录: 2026-01-29
查看麦克朱的 主题 / 回贴
2楼  发表于: 12小时前
*65536 ,或直把字给到M,再用M处理完转回D
楼主留言:
高16位要除65536
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
3楼  发表于: 10小时前
是个好办法,但三菱的ST用不了 << 、>>直接除吗
引用
引用第1楼cvlsam于2026-01-29 10:35发表的  :
每乘以一次2  左移一位,那么乘以4,就左移2位,依次类推
同样每除以一次2  右移一位,那么除以4,就右移2位,依次类推

Good Luck~
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6650 个
工控威望: 38462 点
下载积分: 17500 分
在线时间: 9869(小时)
注册时间: 2006-09-13
最后登录: 2026-01-29
查看cvlsam的 主题 / 回贴
4楼  发表于: 9小时前
引用
引用第3楼1151847703于2026-01-29 13:58发表的  :
是个好办法,但三菱的ST用不了 << 、>>直接除吗


除2       右移1位
除4       右移2位
除8        右移3位
除16      右移4位
除32      右移5位
除64      右移6位
除128    右移7位
除256     右移8位
.........

有必要用FOR循环吗?

DWordDate :=   DwordDate / 65536;

Good Luck~
楼主留言:
高手,感谢大佬指导
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
5楼  发表于: 7小时前
我觉得有必要,要移16次,可能其他地方也要移,写了个功能快测试是可行的,感谢
引用
引用第4楼cvlsam于2026-01-29 14:22发表的  :


除2       右移1位
除4       右移2位
除8        右移3位
.......
朱光显
学无止境,继续加油
级别: 论坛先锋
精华主题: 0
发帖数量: 182 个
工控威望: 1318 点
下载积分: 1815 分
在线时间: 148(小时)
注册时间: 2020-07-08
最后登录: 2026-01-29
查看朱光显的 主题 / 回贴
6楼  发表于: 7小时前
引用
引用第4楼cvlsam于2026-01-29 14:22发表的  :


除2       右移1位
除4       右移2位
除8        右移3位
.......

简单明了的好办法
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
7楼  发表于: 7小时前
这个办法也不错,虽然还没测试,应该也是可行的
引用
引用第2楼麦克朱于2026-01-29 11:19发表的  :
*65536 ,或直把字给到M,再用M处理完转回D
飞龙舞天
级别: 略有小成
精华主题: 0
发帖数量: 312 个
工控威望: 448 点
下载积分: 1058 分
在线时间: 503(小时)
注册时间: 2014-06-24
最后登录: 2026-01-29
查看飞龙舞天的 主题 / 回贴
8楼  发表于: 6小时前
多学习一下单片机吧,数据合成和分解是必修课,其实在单片机中,乘除法的本质也就是移位
楼主留言:
不仅是单片机
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
9楼  发表于: 6小时前
图片:
低16位与16#FFFF操作,得到低16位
高16位/65536,得到高位
数据合并,测试OK,感觉这样算比较简洁的
1151847703
级别: 论坛先锋
精华主题: 0
发帖数量: 165 个
工控威望: 1522 点
下载积分: 1776 分
在线时间: 145(小时)
注册时间: 2016-11-17
最后登录: 2026-01-29
查看1151847703的 主题 / 回贴
10楼  发表于: 6小时前
高手,感谢大佬指导
引用
引用第4楼cvlsam于2026-01-29 14:22发表的  :


除2       右移1位
除4       右移2位
除8        右移3位
.......