恭喜,你发布的帖子
发布于 2024-06-23 10:39:36
37楼
实在抱歉,听不懂你的意思,专业知识储备还不够
我给你道歉。
我又回去看了问题,确实是没看仔细。
说它是补码表示的数,不对,引起不良误导,十分抱歉。
这个温度模块,放弃更为合适的补码,而采取最初级的符号数表示,非常不通用。
单纯以最高位表示符号,不能直接使用现有的加减法进行运算。
使用前,把它变成一个补码方式表示的数,处理起来就更方便。
参考的方法:
假如VW0是传上来的那个数
STL:
LD V0.7 // 判断最高位V0.7是否为1
R V0.7, 1 // 去掉符号位,变成正值
*I -1, VW0 // 变成补码表示的负数
转成LAD:
如果,数据自身要表达1位小数,可再继续转成浮点数,并除以10.0。
比如,VW0存放补码方式表示的16位整数:
STL:
LD Always_On:SM0.0
ITD VW0, AC0 // 扩展16位数至32位,存于AC0
DTR AC0, AC0 // 32位整数转浮点数
/R 10.0, AC0 // 含1位小数
转成LAD:
请填写推广理由:
分享
只看
楼主