向C51高手门请教

[复制链接]
2782|8
 楼主| xuetian110 发表于 2007-1-6 10:56 | 显示全部楼层 |阅读模式
dc, FOR, AC
向高手请教,这是一段AD7328采集程序,下面的程序是采集完8路后,判断有没有负数,但我没看明白为什么这么编,有哪位大虾能给我将讲吗?最好详细点,小弟第感激不禁

                   for(chl=0;chl<8;chl++)
                   {

                     if(DC_data1[chl]&0x1000)
                      {
                       DC_data1[chl]-=0x0001;
                       DC_data1[chl]=~DC_data1[chl];
                       DC_data1[chl]&=0x0fff;
                       DC_data1[chl]=(-DC_data1[chl]);
                      }
                   }
                  DC_data[0]=DC_data1[0];
                  DC_data[1]=DC_data1[1];
                  DC_data[2]=DC_data1[4];
                  DC_data[3]=DC_data1[5];
                  DC_data[4]=DC_data1[7];
                  DC_data[5]=DC_data1[6];
                  DC_data[6]=DC_data1[3];
                  DC_data[7]=DC_data1[2];
                  each_volt();
iaiwork21 发表于 2007-1-6 10:58 | 显示全部楼层

赐教?请教?

晕了
 楼主| xuetian110 发表于 2007-1-6 11:36 | 显示全部楼层

不好意思

用词不当
可爱的小猪 发表于 2007-1-8 13:08 | 显示全部楼层

估计得对着具体电路来研究

光看这些代码也难弄懂啊,而且一点注释都没
BugKing 发表于 2007-1-8 14:35 | 显示全部楼层

我的理解

一般ad转换 ,负电压会用补码表示,这段代码
                   for(chl=0;chl<8;chl++)
                   {

                     if(DC_data1[chl]&0x1000)
                      {
                       DC_data1[chl]-=0x0001;
                       DC_data1[chl]=~DC_data1[chl];
                       DC_data1[chl]&=0x0fff;
                       DC_data1[chl]=(-DC_data1[chl]);
                      }
                   }

通过最高位的符号位是否是1,判断是否是负电压,如果是负的 就将data1[ch1]取反加一,得到原码 即最高位是符号位,其他位是原码。

最后存储每路数据
                  DC_data[0]=DC_data1[0];
                  DC_data[1]=DC_data1[1];
                  DC_data[2]=DC_data1[4];
                  DC_data[3]=DC_data1[5];
                  DC_data[4]=DC_data1[7];
                  DC_data[5]=DC_data1[6];
                  DC_data[6]=DC_data1[3];
                  DC_data[7]=DC_data1[2];
置于为什么不对应数组的序号 我就不知道了 呵呵!!!
xzhenggen 发表于 2007-1-9 08:54 | 显示全部楼层

上面不是循环8次了,就己经对应数组的序号.

BugKing 发表于 2007-1-9 16:56 | 显示全部楼层

我的理解 补充

我的意思是这段代码
                  DC_data[0]=DC_data1[0];
                  DC_data[1]=DC_data1[1];
                  DC_data[2]=DC_data1[4];
                  DC_data[3]=DC_data1[5];
                  DC_data[4]=DC_data1[7];
                  DC_data[5]=DC_data1[6];
                  DC_data[6]=DC_data1[3];
                  DC_data[7]=DC_data1[2];
它把   存储在DC_data1的数据传递给了 DC_data
这两个数组的下标 不是对应的 ,这个为什么不对应 我不知道原因!!                  
 楼主| xuetian110 发表于 2007-1-10 08:38 | 显示全部楼层

谢谢了

上面不对应是因为引脚的缘故,上面引脚就是这个顺序
BugKing 发表于 2007-1-10 13:37 | 显示全部楼层

哦 原来如此

没注释的程序 就是不好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

101

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部