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

📄 ad.lst

📁 ad准确采集
💻 LST
字号:
C51 COMPILER V7.06   AD                                                                    03/23/2005 22:21:02 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AD
OBJECT MODULE PLACED IN ad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe ad.c DB OE

stmt level    source

   1          #include <main.H>
   2          #include <intrins.h>
   3          
   4          
   5          //#include <C8051F020.H>
   6          //*******************************************************************//
   7          // NOTE:The max value of frequency is                           *//
   8          // gain:1,2,4,8,16,0.5;  *//
   9          //*******************************************************************//
  10          void SampFunc(long SYSCLK, int totalChannel , long sampleRate , float gain ,   volatile unsigned int  *sam
             -ples , long numSample)
  11          {
  12   1              //unsigned int *samples2;
  13   1              static int channel=0;
  14   1              volatile int i=0 ;
  15   1              for(i=0;i<numSample;i++)
  16   1                 samples[i]=0;
  17   1      //      int j;
  18   1          SFRPAGE=0x0;
  19   1              AD0INT = 0; // 清除ADC0转换结束标志
  20   1          EIE2 &= ~0x02; // 禁止ADC0中断
  21   1              Timer3_Init(SYSCLK/sampleRate);         //初始化定时器3以ADC0采样速率溢出
  22   1              ADC0_Init(gain);                            //初始化ADC
  23   1              SFRPAGE=0x0;
  24   1              AD0EN=1;                                //允许ADC
  25   1              //EA=1;                                   //允许全局中断
  26   1      
  27   1              SFRPAGE=0x01;
  28   1              TMR3CN |= 0x04; // 启动定时器3
  29   1          //for(i=0 ; i<numSample ; i++)
  30   1              //{
  31   1                      //SFRPAGE=0x01;
  32   1                      //TMR3CN |= 0x04; // 启动定时器3
  33   1              
  34   1                      //SFRPAGE=0x00;
  35   1                      //while (AD0INT == 0);                //ADC完成了一次数据转换
  36   1      
  37   1                      //AD0INT = 0;                         // 清除ADC0转换结束标志
  38   1                  
  39   1                      //samples[i] = ADC0H;
  40   1                      //samples[i]=(samples[i]<<8)|ADC0L; // 读和存储ADC0值
  41   1              //      channel++;
  42   1              //      if(channel==totalChannel)
  43   1              //      {
  44   1              //              channel=0;
  45   1              //      }
  46   1              //      AMX0SL = channel;
  47   1              //}
  48   1      //              EIE2 &= ~0x02; // 禁止ADC0中断
  49   1      //              ADC0_DONE = 1; // 设置DONE标志
  50   1      
  51   1      
  52   1      // 上传采样值到UART0//////?????????
  53   1      //      LED = 0;                               // 上传其间关LED 灭///////?????????
  54   1              //AD0EN = 0;                             // AD采集完NUM_SAMPLES个数据后,关闭ADC0
C51 COMPILER V7.06   AD                                                                    03/23/2005 22:21:02 PAGE 2   

  55   1              //EA=0; 
  56   1              //////如何停止定时器3的工作????????
  57   1              i=0;
  58   1              SFRPAGE=0x0;
  59   1              while(1)
  60   1               {
  61   2                 
  62   2                 //AD0INT = 0; // 清除ADC0转换结束标志
  63   2             while (AD0INT == 0);
  64   2                 AD0INT == 0;
*** WARNING C275 IN LINE 64 OF AD.C: expression with possibly no effect
  65   2             samples[i] = ADC0; // 读和存储ADC0值
  66   2                 i++;
  67   2                 if(i ==numSample)
  68   2                   break;
  69   2               }      
  70   1          SFRPAGE=0x0;
  71   1              EIE2 &= ~0x02; // 禁止ADC0中断
  72   1              AD0EN=0;
  73   1              //      ADC0_DONE = 1; // 设置DONE标志
  74   1              SFRPAGE=0x01;
  75   1              TMR3CN &= ~0x04; // 停止定时器3         
  76   1              EA=0;    
  77   1      }
*** WARNING C280 IN LINE 10 OF AD.C: 'totalChannel': unreferenced local variable
*** WARNING C280 IN LINE 13 OF AD.C: 'channel': unreferenced local variable
  78          
  79          
  80          //-----------------------------------------------------------------------------
  81          // 定时器3初始化
  82          //-----------------------------------------------------------------------------
  83          //
  84          
  85          // 配置定时器3 自动重装间隔由 <counts> 决定(不产生中断) 使用系统时钟为时基
  86          //
  87          void Timer3_Init (int counts)
  88          {
  89   1              SFRPAGE=0x01;
  90   1              //TMR3CN = 0x02; // 停止定时器3; 清除TF3;
  91   1                                // 使用系统时钟作为时基
  92   1              TMR3CF =0x08;                     
  93   1          TMR3CN =0x00;
  94   1              //TMR3RL = -counts; // 初始化重装值
  95   1              
  96   1              TMR3L = 0xFF; // 立即开始重装
  97   1          TMR3H = 0xFF;
  98   1              RCAP3 = -counts;       // 初始化重装值
  99   1          //RCAP3 = 0x0;
 100   1              EIE2 &= ~0x01; // 禁止定时器3中断
 101   1          //EIE2 &= ~0x02;
 102   1              //TMR3CN |= 0x04; // 启动定时器3
 103   1      }
 104          
 105          
 106          //-----------------------------------------------------------------------------
 107          // ADC0初始化
 108          //-----------------------------------------------------------------------------
 109          //
 110          // 配置ADC0 使用定时器3溢出作为转换开始信号,转换结束产生一个中断,
 111          // 使用左对齐输出模式
 112          // 使能ADC转换结束中断中断使能ADC0 但禁止ADC0转换结束中断
 113          //
C51 COMPILER V7.06   AD                                                                    03/23/2005 22:21:02 PAGE 3   

 114          void ADC0_Init (float gain)
 115          {
 116   1      
 117   1      //      ADC0CN = 0x45;   // 禁止ADC0;低功耗跟踪方式;
 118   1                               //当定时器3溢出启动ADC0转换;
 119   1                                               //ADC0数据左对齐 
 120   1          SFRPAGE=0x0;
 121   1              ADC0CN = 0x04;   // 禁止ADC0;低功耗跟踪方式;
 122   1                               //当定时器3溢出启动ADC0转换;
 123   1                                               //ADC0数据右对齐 
 124   1              REF0CN = 0x07; // 使能温度传感器, 片内 VREF,和 VREF 输出缓冲器
 125   1              //REF0CN = 0x03;   // 不使能温度传感器,////???????????
 126   1      
 127   1              AMX0CF = 0x00; //AIN0.0和AIN0.1为单端输入
 128   1              //AMX0SL = 0x00; // 选择AIN0.0作为ADC多路转换输入!
 129   1          AMX0SL = 0x01; // 选择AIN0.1作为ADC多路转换输入!
 130   1      
 131   1              ADC0CF = (SYSCLK_AD/2500000/2-1) << 3; // ADC转换时钟2.5MHz
 132   1      
 133   1              if(gain==1)   //gain在哪定义的????????????????????????
 134   1              {
 135   2                      ADC0CF&=~0x07;      // PGA增益 = 1
 136   2              }else if(gain==2)
 137   1              {
 138   2                      ADC0CF&=~0x07;      // PGA增益 = 2
 139   2                      ADC0CF|=0x01;
 140   2              }else if(gain==4)
 141   1              {
 142   2                      ADC0CF&=~0x07;      // PGA增益 = 4
 143   2                      ADC0CF|=0x02;
 144   2              }else if(gain==8)
 145   1              {
 146   2                      ADC0CF&=~0x07;      // PGA增益 = 8
 147   2                      ADC0CF|=0x03;
 148   2              }else if(gain==16)
 149   1              {
 150   2                      ADC0CF&=~0x07;      // PGA增益 = 16
 151   2                      ADC0CF|=0x04;
 152   2              }else if(gain==0.5)
 153   1              {
 154   2                      ADC0CF&=~0x07;      // PGA增益 = 0.5
 155   2                      ADC0CF|=0x06;
 156   2              }
 157   1        
 158   1              EIE2 |= 0x02; // 允许ADC0中断
 159   1      }
 160          
 161          
 162          
 163          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    428    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      27
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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