打印

向C51高手门请教

[复制链接]
1558|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 | 只看该作者

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

光看这些代码也难弄懂啊,而且一点注释都没

使用特权

评论回复
5
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];
置于为什么不对应数组的序号 我就不知道了 呵呵!!!

使用特权

评论回复
6
xzhenggen| | 2007-1-9 08:54 | 只看该作者

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

使用特权

评论回复
7
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
这两个数组的下标 不是对应的 ,这个为什么不对应 我不知道原因!!                  

使用特权

评论回复
8
xuetian110|  楼主 | 2007-1-10 08:38 | 只看该作者

谢谢了

上面不对应是因为引脚的缘故,上面引脚就是这个顺序

使用特权

评论回复
9
BugKing| | 2007-1-10 13:37 | 只看该作者

哦 原来如此

没注释的程序 就是不好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

101

帖子

0

粉丝