微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > C51编程中如何把两个字节合并成一个字?

C51编程中如何把两个字节合并成一个字?

时间:10-02 整理:3721RD 点击:
本人用51单片机读取DS18B20的温度值回来,读回来两个字节,用一个数组分别装高低字节,可是我想把它们合并成一个unsigned int 类型的一个字,然后除以0x10,因为读回来的数值要比实际的大0x10.例如16.0℃,读回来的值为  高位0x01,低位0x00;我该怎么把这来年各个自己合并成一个字呢?例如,unsigned int temp; temp=0x0100这样子的

高位左移8位+低位就行了

能不能用联合体来完成呢?

可以啊,合 并可以用各种方法,看你喜欢用哪种了

如果高字节左移8位,那岂不是全部变成0了?

高位左移8位是放到那个字里面了,没说清楚之前~~

unsigned int temp;

unsigned int temp,a,b;
mian()
{
temp=a<<4|b;
}

unsigned int temp,a,b;
mian()
{
temp=(a<<4)|b;
}

unsigned int temp;
unsigned char a,b;
mian()
{
temp=(a<<8)|b;
}

移位操作就好啦。

union Tempr{
unsigned char TempHL[2];
unsigned int TempResult;
};
将两个字节放入TempHL,最后TempResult就是最终值。不过移位更简单

不错。值得学习!

左移一位之后 高位不都全部移出去了么?全部变成0了 怎么和第二个字节相加啊?

不错不错学习一下哈哈

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top