24位的称重AD转换芯片海芯HX711使用及其编码意义
24位的AD转换芯片HX711,官方资料上面,
数据输出格式为二进制补码,
范围为最小0x800000,最大为0x7fffff,
请问这是什么意思?实际输出范围是多少?
官方参考程序:
for(i=0;i<24;i++)
{
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO)Count++;
}
ADSK=1;
// Count=Count^0x800000;
;
ADSK=0;
后边的异或运算是为了什么?
从网上搜到的有些程序还多加了一段
for(i=0;i<24;i++)
{
ADSK=1;
Count=Count<<1;
ADSK=0;
if(ADDO)Count++;
}
ADSK=1;
// Count=Count^0x800000;
;
ADSK=0;
/* if((Count & 0x800000) == 0x800000)
{
Count = ~(Count - 1);
} */
又是什么意思?
谢谢各位高手大侠! ./emotion/em001.gif 按照补码的理解
Count=Count^0x800000; 这里没什么意义,
最后这一段才是有用的
if((Count & 0x800000) == 0x800000)
{
Count = ~(Count - 1);
} 这里是由补码求出其除符号位的原码的计算。 {:dizzy:}{:dizzy:}搞430的,搞了好久都没搞出来。。伤不起了。。 楼主明白Count=Count^0x800000什么含义了吗?看了几个程序有的有这句,有的把这句注释掉了。迷惑中。。。
同求解释 !!!
页:
[1]