⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adsample.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 677   2                      uiRmsCounter[0][uchValue1] = AD.uiRMSCountNumber;
 678   2                      uchValue1 = (uchValue1 + 1) & 0x03;
 679   2              }
 680   1              else
 681   1              {
 682   2      /*              AD.uiDataAverageBAK[1][AD.uchCountNumber2] = AD.uiDataAverage[1];
 683   2                      AD.uchCountNumber2++;   
 684   2                      if (AD.uchCountNumber2 >= 15)
 685   2                      {
 686   2                              AD.uchCountNumber2 = 0;
 687   2                      }         */
 688   2                      uiRmsCounter[1][uchValue2] = AD.uiRMSCountNumber;
 689   2                      uchValue2 = (uchValue2 + 1) & 0x03;
 690   2              }                                          
 691   1      
 692   1              if((uiRmsCounter[uchChannel - 1][0] > 2) && (uiRmsCounter[uchChannel - 1][1] > 2) && (uiRmsCounter[uchCha
             -nnel - 1][2] > 2) && (uiRmsCounter[uchChannel - 1][3] > 2))
 693   1              {
 694   2                      bCycleFlag = 1;                  //有整周期
 695   2              }
 696   1              else
 697   1              {
 698   2                      bCycleFlag = 0;           //没有整周期
 699   2              }
 700   1      
 701   1      /*      if (bCycleFlag == 1)
 702   1              {
 703   1                      for (j=0; j<15; j++)
 704   1                      {
 705   1                              AD.uiDataAverage[uchChannel - 1] += AD.uiDataAverageBAK[uchChannel - 1][j];
 706   1                      }
 707   1                         
 708   1                      AD.uiDataAverage[uchChannel - 1] = AD.uiDataAverage[uchChannel - 1]>>4; 
 709   1              }          */
 710   1      
 711   1      
 712   1              uiAverageValue = AD.uiDataAverage[uchChannel - 1];               
 713   1      
 714   1      //----------------------以下程序可能需要打开-----------------------------------------
 715   1      /*      for (j=0; j<uiTempData; j++)
 716   1              {                       
 717   1                      lDataCorrect = (long)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - AD.uiDataAverage[uchChannel - 1];
 718   1                      fDataAverageSum = fDataAverageSum + lDataCorrect * lDataCorrect;
 719   1                      FeedDog();
 720   1              }
 721   1      
 722   1              fDataAverageSum = fDataAverageSum / uiTempData; 
 723   1      
 724   1              AD.fDataRMSAverage[uchChannel - 1] = sqrt(fDataAverageSum);               */
 725   1      //------------------------------------------------------------------------------------------    
 726   1      //      nnnn = 0;
 727   1              FeedDog();
 728   1              for (j=0; j<uiTempData; j++)
 729   1              {                       
C51 COMPILER V7.10   ADSAMPLE                                                              09/18/2008 14:09:32 PAGE 13  

 730   2                      lDataCorrect = (long)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - uiAverageValue;
 731   2                      ulDataADSum = ulDataADSum + lDataCorrect * lDataCorrect;  
 732   2      /*                      FeedDog();                                                                                                      
 733   2      
 734   2                      mmmm = (float)SrcData[(uiDataOffsetAddress + j) & 0x7FF] - 2074.18;//  uiAverageValue;
 735   2                      nnnn = nnnn + mmmm * mmmm;               */
 736   2      
 737   2      
 738   2      
 739   2      
 740   2              }
 741   1              FeedDog();
 742   1              ulDataADSum = ulDataADSum / uiTempData; 
 743   1      
 744   1      
 745   1      
 746   1              fTempValue = sqrt(ulDataADSum);
 747   1      
 748   1      
 749   1      
 750   1              if (uchChannel == 1)
 751   1              {
 752   2                      AD.fDataRMSADAverage[0][uchRMSDataStorageNumber1] = fTempValue;    //20080708
 753   2                      uchRMSDataStorageNumber1 = (uchRMSDataStorageNumber1+1) & 0x07;          //20080708
 754   2              }
 755   1              else
 756   1              {
 757   2                      AD.fDataRMSADAverage[1][uchRMSDataStorageNumber2] = fTempValue;    //20080708
 758   2                      uchRMSDataStorageNumber2 = (uchRMSDataStorageNumber2+1) & 0x07;         //20080708
 759   2              }
 760   1              
 761   1              if (bCycleFlag == 0)
 762   1              {
 763   2                      fADDataSum = 0;
 764   2                      for (j=0; j<8; j++)             
 765   2                      {
 766   3                              fADDataSum += AD.fDataRMSADAverage[uchChannel - 1][j];
 767   3                      }
 768   2                      fTempValue = fADDataSum / 8;
 769   2              }                                       
 770   1              
 771   1              AD.fDataRMSAverage[uchChannel - 1] = fTempValue;
 772   1      }               
 773          
 774          
 775          
 776          /*
 777          峰峰值计算的方法:
 778          
 779          1) 采样程序中峰峰值计算函数的算法:
 780          2)取15组存储器存储数据最高值,取15组存储器存储数据最低值;
 781          3)采集数据256组,新采集值与最高、最低的15组比较,判定是否在其中;
 782          4)如果在其中,该采集值与组号将存储,并挤掉不是最高最低值的那一组值,并排序;
 783          5)如果不在其中,舍弃;
 784          6)采集完毕后,取最高15组数的最低值,取最低15组数的最高值,得到最近的峰峰值;
 785          7)以最近峰峰值的3/4与上次峰峰值的1/4作为最终的峰峰值输出;
 786          8)初始化1)的内容,重复2)-6)步骤的过程。
 787          */
 788          
 789          
 790          //*************************************************/
 791          //*                  CH0 PKPK Value               */
C51 COMPILER V7.10   ADSAMPLE                                                              09/18/2008 14:09:32 PAGE 14  

 792          //*************************************************/
 793          void CalculatePKPKValue0(unsigned int xdata  *SrcData,unsigned int uiSampleLocation,unsigned int uiCurGrou
             -pIndex,unsigned int uiPassedGroupIndex,unsigned int uiGroupNum)
 794          {                 
 795   1              char i;
 796   1              unsigned char j,k;   
 797   1              unsigned int s,m; 
 798   1              idata unsigned int xdata *PTR;
 799   1      
 800   1              m = SrcData + uiSampleLocation + AD.uiGroupLength;
 801   1              for(PTR = SrcData + uiSampleLocation; PTR<m; PTR++)
 802   1              {                                  
 803   2                      FeedDog();    
 804   2                      s = *PTR;           
 805   2              
 806   2                      if(s>=AD.uiMaxValue0[29]) //29
 807   2                      {         
 808   3                              if(AD.uchCurMaxCount< 5) //15
 809   3                              {
 810   4                                      AD.uchCurMaxCount++;
 811   4                                      k=29;                            //29
 812   4                              }
 813   3                              else
 814   3                              {
 815   4                                      k=0;
 816   4                                      for(i=29;i>=0;i--)      //29
 817   4                                      {
 818   5                                              if((AD.uiMaxGroup0[i]==uiCurGroupIndex)&&(s>AD.uiMaxValue0[i]))   
 819   5                                              {
 820   6                                                      k=i;
 821   6                                                      break;
 822   6                                              }                               
 823   5                                      }                       
 824   4                              }                       
 825   3                              if(k!=0)
 826   3                              {
 827   4                                      AD.uiMaxValue0[k] = s;
 828   4                                      AD.uiMaxGroup0[k] = uiCurGroupIndex;
 829   4                                      for(i=k-1;i>=0;i--)
 830   4                                      {
 831   5                                              if(s>=AD.uiMaxValue0[i])
 832   5                                              {                                       
 833   6                                                      AD.uiMaxValue0[i+1] = AD.uiMaxValue0[i];
 834   6                                                      AD.uiMaxGroup0[i+1] = AD.uiMaxGroup0[i];
 835   6                                                      AD.uiMaxValue0[i] = s;
 836   6                                                      AD.uiMaxGroup0[i] = uiCurGroupIndex;
 837   6                                              }
 838   5                                              else
 839   5                                              {
 840   6                                                      break;                          
 841   6                                              }                               
 842   5                                      }
 843   4                              }                       
 844   3                      }
 845   2              //-------------------------------minimum value------------------------------
 846   2                      if(s<=AD.uiMinValue0[29])        //29
 847   2                      {         
 848   3                              if(AD.uchCurMinCount< 5)           //15
 849   3                              {
 850   4                                      AD.uchCurMinCount++;
 851   4                                      k=29;                            //29 
 852   4                              }
C51 COMPILER V7.10   ADSAMPLE                                                              09/18/2008 14:09:32 PAGE 15  

 853   3                              else
 854   3                              {
 855   4                                      k=0;
 856   4                                      for(i=29;i>=0;i--)               //29
 857   4                                      {
 858   5                                              if((AD.uiMinGroup0[i]==uiCurGroupIndex)&&(s<AD.uiMinValue0[i]))
 859   5                                              {
 860   6                                                      k=i;
 861   6                                                      break;
 862   6                                              }                               
 863   5                                      }                       
 864   4                              }         
 865   3                              if(k!=0)
 866   3                              {                               
 867   4                                      AD.uiMinValue0[k] = s;
 868   4                                      AD.uiMinGroup0[k] = uiCurGroupIndex;
 869   4                                      for(i=k-1;i>=0;i--)
 870   4                                      {
 871   5                                              if(s<=AD.uiMinValue0[i])
 872   5                                              {                                                               
 873   6                                                      AD.uiMinValue0[i+1] = AD.uiMinValue0[i];
 874   6                                                      AD.uiMinGroup0[i+1] = AD.uiMinGroup0[i];
 875   6                                                      AD.uiMinValue0[i] = s;
 876   6                                                      AD.uiMinGroup0[i] = uiCurGroupIndex;                                    
 877   6                                              }                               
 878   5                                      }       
 879   4                              }                                               
 880   3                      } 
 881   2              }
 882   1                      //------------------------Group Replacement-------------------
 883   1                        
 884   1              AD.uchCurMinCount=0;       
 885   1              AD.uchCurMaxCount=0;
 886   1              if(AD.uiMaxValue0[4]>AD.uiMinValue0[4])            //9
 887   1              {
 888   2                      AD.uiCurPKPKValue[0]=((AD.uiMaxValue0[4]-AD.uiMinValue0[4])*3+AD.uiLastPKPKValue[0])>>2;
 889   2              }
 890   1              else
 891   1              {
 892   2                      AD.uiCurPKPKValue[0]=0;
 893   2              }
 894   1      
 895   1              AD.uiLastPKPKValue[0]=AD.uiCurPKPKValue[0];                             
 896   1                                      
 897   1              i=0;
 898   1              for(j=0;j<30;j++)  //30
 899   1              {
 900   2                      if((AD.uiMaxGroup0[j]!=uiPassedGroupIndex)&&(AD.uiMaxGroup0[j] < uiGroupNum))
 901   2                      {
 902   3                              AD.uiMaxGroup0[i]=AD.uiMaxGroup0[j];
 903   3                              AD.uiMaxValue0[i]=AD.uiMaxValue0[j];
 904   3                              i++;                                            
 905   3                      }                                       
 906   2              }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -