letmeseesee 发表于 2012-1-10 14:08:18

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);
        }                */

又是什么意思?
谢谢各位高手大侠!

letmeseesee 发表于 2012-1-12 10:06:11

./emotion/em001.gif

时代还怪 发表于 2012-11-23 19:59:17

按照补码的理解
Count=Count^0x800000; 这里没什么意义,
最后这一段才是有用的
if((Count & 0x800000) == 0x800000)
         {
               Count = ~(Count - 1);
         }      这里是由补码求出其除符号位的原码的计算。

568581185 发表于 2013-5-17 09:52:42

{:dizzy:}{:dizzy:}搞430的,搞了好久都没搞出来。。伤不起了。。

lklhzu 发表于 2014-3-30 23:00:04

楼主明白Count=Count^0x800000什么含义了吗?看了几个程序有的有这句,有的把这句注释掉了。迷惑中。。。

mk_avatar 发表于 2014-9-4 15:19:57

同求解释 !!!
页: [1]
查看完整版本: 24位的称重AD转换芯片海芯HX711使用及其编码意义