OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 15404|回复: 3

芯片有两个8位寄存器,储存高8位、低8位的数据。这16位的数据是以补码的形式储存(有正负号),寻求读取该数据的方法

[复制链接]

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
发表于 2012-7-28 16:15:47 | 显示全部楼层 |阅读模式
芯片有两个8位寄存器,储存高8位、低8位的数据。这16位的数据是以补码的形式储存(有正负号),寻求读取该数据的方法。
现在我用移位的方法赋值给16位无符号,再强制转换,但是数据有问题,整数250多到510多的数据缺失,负数-1到-250 多的数据缺失。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-7-28 16:32:35 | 显示全部楼层
就是高位为0xfe或者0x00,没别的数了
回复 支持 反对

使用道具 举报

13

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2012-3-24
在线时间
3 小时
 楼主| 发表于 2012-7-28 17:15:23 | 显示全部楼层
自问自答:先把高八位第八位赋值给有符号32位的变量,再强制转换为有符号16位,OK
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-28 18:50:12 | 显示全部楼层
数据存储从来不用考虑正负号和什么类型,强制存储,读出的时候强制赋值,百试百灵.
比如浮点,你知道占用4个字节,那么不管三七二十一,直接写入4个字节就完了,读出的时候,强制转换为浮点,结果就不会错!
负数也是,强制写入,读出强制转换即可.
参考我们触摸屏校准数据的存储方法.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 01:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表