Title

AD采集程序,采集回来总是零,求大神帮忙指出程序错误

1475次浏览

问题描述

我编的A/D的程序,代码如下,不知道怎么回事,输出就是总是零。。急死了!求大神指教!在线等!

for(i=0;i  {
  if(temp[2*i]   {
   middle=temp[2*i];temp[2*i]=temp[2*i+1];temp[2*i+1]=middle;
  }

  max=temp[2*i];
  min=temp[2*i+1];
  
  for(j=2*i;j   {      
      if(temp[j]>max) 
       {
        max=temp[j];
        temp[j]=temp[2*i];
        temp[2*i]=max;
       }  //找出数组中最大的5个数据放到前5个偶数位
       
      if(temp[j]        {
        min=temp[j];
        temp[j]=temp[2*i+1];
        temp[2*i+1]=min;
       } //找出数组中最小的5个数据放到前5个奇数位    
  
  }
 }
  for(i=2*num_find;i   {
   SUM=SUM+temp[i];
  }

average_Practical=(SUM*1/Number)/4096*3;  //使用内部3V的基准源 

头像

敏敏·0.00

2016-06-20提问

分数   时间  

全部答案 5

1

若单条命令测试通过,应对上述程序的进行断点调试。第一个for循环结束后,查temp数组,若全为零,则启动读数据前的AD指令不正确。一般可能问题为中断未清零(中断方式),上次读数据后AD未复位等。

评论 (0)条评论
头像555

  滴答·110.00

2016-12-29回答

3
已采纳

已采纳

AD需要分步测试

1. 设置好AD后,首先单条命令测试,一般读数据,AD返回值若为全零。则设置不正确,很可能AD为正确启动。应检查软硬件设置,注意包括硬件。


2.若单条命令测试通过,应对上述程序的进行断点调试。第一个for循环结束后,查temp数组,若全为零,则启动读数据前的AD指令不正确。一般可能问题为中断未清零(中断方式),上次读数据后AD未复位等。


3. 若temp数组数据正常不全为零,则应检查程序数据空间分配是否合理,有没有可能被其他变量覆盖此空间。一般单片机有空间分配文件,与具体芯片相关。

评论 (0)条评论
头像555

  姚佳·20.00

2016-07-02回答

3

先确认硬件没有问题吧!

评论 (0)条评论
头像555

  纵横捭阖·20.00

2016-06-30回答

2

    请问楼主这一段程序是在干嘛?感觉没有必要啊

     for(j=2*i;j    {      
      if(temp[j]>max) 
       {
        max=temp[j];
        temp[j]=temp[2*i];
        temp[2*i]=max;
       }  //找出数组中最大的5个数据放到前5个偶数位
       
      if(temp[j]         {
        min=temp[j];
        temp[j]=temp[2*i+1];
        temp[2*i+1]=min;
       } //找出数组中最小的5个数据放到前5个奇数位     


评论 (0)条评论
头像555

  dodok·0.00

2016-06-23回答

3
已采纳

已采纳

应该是因为你最后这句转换语句不对。把average_Practical=(SUM*1/Number)/4096*3改为average_Practical=(SUM*1.0/Number)/4096*3.0试试,应该就好了。

评论 (0)条评论
头像555

  JLT·0.00

2016-06-21回答

5 条记录 1/1 页

撰写答案

Document