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

📄 ad9225.lst

📁 用keil编写高速AD AD9225的工程文件
💻 LST
字号:
C51 COMPILER V7.50   AD9225                                                                08/18/2007 19:09:17 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE AD9225
OBJECT MODULE PLACED IN .\AD9225.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE ..\AD9225\AD9225.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\AD
                    -9225.lst) OBJECT(.\AD9225.obj)

line level    source

   1          #include"AD9225.h"
   2          #include<SST\SST89x5x4.h>
   3          #include<intrins.h>
   4          
   5          #define SAMTIME 65
   6          
   7          float GetScope()
   8          {
   9   1          unsigned char   tempP0[SAMTIME],tempP2[SAMTIME];
  10   1          unsigned char   i,j,N,MeasureTime;
  11   1              unsigned int temp[SAMTIME];
  12   1              float d[SAMTIME];
  13   1              float Scope,max,min; 
  14   1              bit flag;
  15   1              AD9225Clk=0;
  16   1              flag=1;
  17   1              while(flag){
  18   2              MeasureTime++;
  19   2              for(i=0;i<SAMTIME;i++){
  20   3                temp[i]=0;
  21   3                tempP0[i]=0;
  22   3                tempP2[i]=0;
  23   3                Scope=0;
  24   3                      }
  25   2              for(i=0;i<SAMTIME;i++){                 //GetAD
  26   3                AD9225Clk=1;
  27   3                tempP0[i]=P0;
  28   3                AD9225Clk=0;
  29   3                tempP2[i]=P2;
  30   3                }
  31   2              for(i=0;i<SAMTIME;i++){
  32   3                tempP2[i]&=0x1F;       //屏蔽P2.6,P2.7
  33   3            temp[i]|=tempP2[i];                                         
  34   3                temp[i]<<=8;
  35   3                temp[i]|=tempP0[i];
  36   3                }
  37   2              for(i=0,j=0;i<SAMTIME;i++){
  38   3                if(temp[i]<4096&&temp[i]>512){
  39   4                  d[j]=temp[i]*4.0/4096;
  40   4                      j++;
  41   4                      }
  42   3                }
  43   2              N=j;
  44   2              min=4;
  45   2              max=0.5;
  46   2              for(i=0;i<N;i++){         
  47   3                if(d[i]<min) 
  48   3                  min=d[i];
  49   3                if(d[i]>max) 
  50   3                  max=d[i];     
  51   3                }
  52   2              if(MeasureTime>2){
  53   3                 Scope=(max-min)*1.0374;
  54   3                 flag=0;
C51 COMPILER V7.50   AD9225                                                                08/18/2007 19:09:17 PAGE 2   

  55   3                 }
  56   2         }
  57   1         return Scope;
  58   1      }
  59          
  60          unsigned int* GetAD(unsigned char T)                     //T次
  61          {
  62   1              unsigned char i;
  63   1              unsigned char tempP0[5],tempP2[5];
  64   1              unsigned int temp[5];
  65   1              for(i=0;i<2;i++){
  66   2                AD9225Clk=1;
  67   2                tempP0[i]=P0;
  68   2                AD9225Clk=0;
  69   2                tempP2[i]=P2;
  70   2                }
  71   1               for(i=0;i<T;i++){
  72   2                tempP2[i]&=0x1F;       //屏蔽P2.6,P2.7
  73   2            temp[i]|=tempP2[i];                                         
  74   2                temp[i]<<=8;
  75   2                temp[i]|=tempP0[i];
  76   2                } 
  77   1                return temp; 
  78   1      }
  79          
  80          /************************************
  81           采样两次,所得幅度差与间隔1.2uS的比值
  82          *************************************/
  83          
  84          float GetSlope()
  85          {
  86   1          unsigned char data i;
  87   1              unsigned char data tempP0[2],tempP2[2];
  88   1              unsigned int temp[2];
  89   1              float Slope;
  90   1              bit flag=1;
  91   1              AD9225Clk=0;
  92   1              while(flag){
  93   2                AD9225Clk=1;
  94   2                tempP0[0]=P0;
  95   2                AD9225Clk=0;
  96   2                tempP2[0]=P2;
  97   2                AD9225Clk=1;
  98   2                tempP0[1]=P0;
  99   2                AD9225Clk=0;
 100   2                tempP0[1]=P2;
 101   2                for(i=0;i<2;i++){
 102   3                  tempP2[i]&=0x1F;     //屏蔽P2.6,P2.7
 103   3              temp[i]|=tempP2[i];                                       
 104   3                  temp[i]<<=8;
 105   3                  temp[i]|=tempP0[i];
 106   3                  }
 107   2                if((temp[1]>512)&&(temp[1]<4096)&&(temp[0]>512)&&(temp[0]<4096)){
 108   3                  if(temp[1]>temp[0]){
 109   4                          Slope=(temp[1]-temp[0])*4.0/4096;
 110   4                          Slope=Slope/1.2;
 111   4                          flag=0;
 112   4              }
 113   3                }
 114   2                }
 115   1                return Slope;                                 
 116   1      }
C51 COMPILER V7.50   AD9225                                                                08/18/2007 19:09:17 PAGE 3   

 117          /************************************
 118               根据统计规律求占空比,然后求斜率
 119          *************************************/
 120          /*
 121          unsigned int* GetLAD()
 122          {
 123                  unsigned char i;
 124                  unsigned char  data tempP0[2],tempP2[2];
 125                  unsigned int temp[2];
 126                  for(i=0;i<2;i++){
 127                    AD9225Clk=1;
 128                    tempP0[i]=P0;
 129                    AD9225Clk=0;
 130                    tempP2[i]=P2;
 131                    }
 132                   for(i=0;i<2;i++){
 133                    tempP2[i]&=0x1F;       //屏蔽P2.6,P2.7
 134                temp[i]|=tempP2[i];                                         
 135                    temp[i]<<=8;
 136                    temp[i]|=tempP0[i];
 137                    } 
 138                    return temp;
 139          }
 140          
 141          float GetSlope()
 142          {
 143              unsigned char tempP0[SAMTIME],tempP2[SAMTIME];
 144              unsigned char i,j,N,MeasureTime;
 145                  static int Up,Down;
 146                  unsigned int temp[SAMTIME];
 147                  float d[SAMTIME];
 148                  float Scope,max,min,Slope; 
 149                  bit flag;
 150                  unsigned char T;
 151                  if(T==30){
 152                     T=0;
 153                     Up=0;
 154                     Down=0;
 155                     }
 156                  T++;
 157                  AD9225Clk=0;
 158                  flag=1;
 159                  while(flag){
 160                  MeasureTime++;
 161                  for(i=0;i<SAMTIME;i++){
 162                    temp[i]=0;
 163                    tempP0[i]=0;
 164                    tempP2[i]=0;
 165                    Scope=0;
 166                          }
 167                  for(i=0;i<SAMTIME;i++){                 //GetAD
 168                    AD9225Clk=1;
 169                    tempP0[i]=P0;
 170                    AD9225Clk=0;
 171                    tempP2[i]=P2;
 172                    }
 173                  for(i=0;i<SAMTIME;i++){
 174                    tempP2[i]&=0x1F;       //屏蔽P2.6,P2.7
 175                temp[i]|=tempP2[i];                                         
 176                    temp[i]<<=8;
 177                    temp[i]|=tempP0[i];
 178                    }
C51 COMPILER V7.50   AD9225                                                                08/18/2007 19:09:17 PAGE 4   

 179                  for(i=0,j=0;i<SAMTIME;i++){
 180                    if(temp[i]<4096&&temp[i]>512){
 181                      d[j]=temp[i]*4.0/4096;
 182                          j++;
 183                          }
 184                    }
 185                  N=j;
 186                  min=4;
 187                  max=0.5;
 188                  for(i=0;i<N;i++){         
 189                    if(d[i]<min) 
 190                      min=d[i];
 191                    if(d[i]>max) 
 192                      max=d[i];     
 193                    }
 194                  for(i=0;i<N;i++){
 195                    if(d[i]<d[i+1]) 
 196                      Up++;
 197                    else
 198                      Down++;
 199                    }
 200                  if(MeasureTime>2){
 201                     Scope=(max-min)*1.036944;
 202                     flag=0;
 203                     }
 204             }
 205             Slope=Scope*(Up+Down)/Up;
 206             return Slope;
 207          }
 208          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1278    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----     566
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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