4225|8

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

遇到难点,两个8位数据,拼接成一个16位数据失败 [复制链接]

单片机串口2发来的数据,unsigned char型,存放在一个数组unsigned char xdata Rec_Buf2[50]中:

 

Rec_Buf2[50]中的数据为:

DD 03 00 1B 0B 60 00 00 00 F8 01 04 00 00 29 83 00 00 00 00 00 00 28 5F 01 07 02 0B AA 0B A6 FB DA 77

 

现在要做的是:提取出Rec_Buf2[ ]中0B 60两个数,存入unsigned int  BMSdata[ ]数组中格式为0x0B60

 

使用语句BMSdata[0]|=((Rec_Buf2[4]&0xFF)<<8)|(Rec_Buf2[5]&0xFF); 发现结果不对,仿真后发现BMSdata[0]中的数据为0x0000而不是期望中的0x0B60。   请各位大佬帮忙看看,问题出在哪里了。

 

此帖出自51单片机论坛

最新回复

楼主,不能这样做移位操作的。 BMSdata[0]|=((Rec_Buf2[4]&0xFF)<<8)|(Rec_Buf2[5]&0xFF);的运行会将(Rec_Buf2[4]&0xFF)的值放到8位的缓存器中再<<8,因此就变为0x00了,正确的写法应该是 BMSdata[0] = Rec_Buf2[4] & 0xFF; BMSdata[0] = (BMSdata[0] <<8) | (Rec_Buf2[5] & 0xFF);   详情 回复 发表于 2021-1-25 17:57
点赞 关注(1)
 

回复
举报

6041

帖子

198

TA的资源

版主

沙发
 

代码是看不出有什么问题,赋值别用|=,直接用=

此帖出自51单片机论坛

点评

换成=也不行  详情 回复 发表于 2020-12-21 22:09
 
 
 

回复

1930

帖子

2

TA的资源

版主

板凳
 

((Rec_Buf2[4]&0xFF)<<8)|(Rec_Buf2[5]&0xFF); 

你把这里的“|”改成+试一下。

此帖出自51单片机论坛
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(初级)

4
 

或者多加一级缓存吧,用两个变量把两个数组元素放进去,然后再执行移位和合并,这两个变量建议用uint定义

此帖出自51单片机论坛
 
 
 

回复

6190

帖子

4

TA的资源

版主

5
 
本帖最后由 damiaa 于 2020-12-21 12:58 编辑

(Rec_Buf2[4]&0xFF)<<8)|  8位的数据怎么整还是8位的 所以移位后数据不对了:为0。 先要整成16位的

 

BMSdata[0]|=(((uint16_t)Rec_Buf2[4])<<8) | ((uint16_t)Rec_Buf2[5]);

此帖出自51单片机论坛

点评

改成BMSdata[0] =(((uint16)Rec_Buf2[4])<<8) | ((uint16)Rec_Buf2[5]);运行后BMSdata[0]的值还是0,。并且Rec_Buf2[4],Rec_Buf2[5]都是有值的,分别是0x0B,0X55  详情 回复 发表于 2020-12-21 22:13
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

6
 
lcofjp 发表于 2020-12-21 09:08 代码是看不出有什么问题,赋值别用|=,直接用=

换成=也不行

此帖出自51单片机论坛
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

7
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

回复

6190

帖子

4

TA的资源

版主

8
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

回复

30

帖子

3

TA的资源

一粒金砂(中级)

9
 
闂備礁鎼悮顐﹀磿閸愯鑰块柛娑欐綑鐎氬銇勯幒鍡椾壕缂備焦顨嗛敃銏犵暦濡ゅ懎惟闁宠桨绀佹慨銈夋煟閻橀亶妾烽柛鏂跨箻椤㈡瑩骞嬮敂鑺ユ珫閻庡厜鍋撻柛鎰劤濞堬拷闂備浇鐨崱鈺佹缂傚倸绋勯幏锟�闂備胶鎳撻悺銊╂偋閻愬搫鐒垫い鎺戯攻鐎氾拷婵犵數鍋涢ˇ顓㈠礉瀹€鍕埞闁跨噦鎷�
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 9

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表