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

📄 f350_adc_buffered_2.lst

📁 cs8051f350资料 内有如何使用说明,和寄存器配置等 注意是PDF格式
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.00  F350_ADC_BUFFERED_2                                                    02/08/2009 08:08:02 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE F350_ADC_BUFFERED_2
OBJECT MODULE PLACED IN F350_ADC_Buffered_2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe F350_ADC_Buffered_2.c DB OE BR

stmt level    source

   1          //插上短路环J4,J7,J8的2,3脚,J9的2,3脚,J15,连上232串口线。
   2          //AIN1与AGND连接,在AIN0输入0-2.5V之间的电压。
   3          // Includes
   4          //-----------------------------------------------------------------------------
   5          #include <c8051f350.h>                    // SFR declarations
   6          #include <stdio.h>                        // Standard I/O Library
   7          #include <math.h>
   8          //-----------------------------------------------------------------------------
   9          // 16-bit SFR Definitions for 'F35x
  10          //-----------------------------------------------------------------------------
  11          sfr16 DP       = 0x82;                    // data pointer
  12          sfr16 TMR3RL   = 0x92;                    // Timer3 reload value
  13          sfr16 TMR3     = 0x94;                    // Timer3 counter
  14          sfr16 ADC0DEC  = 0x9a;
  15          sfr16 TMR2RL   = 0xca;                    // Timer2 reload value
  16          sfr16 TMR2     = 0xcc;                    // Timer2 counter
  17          sfr16 PCA0CP0  = 0xe9;                    // PCA0 Module 1 Capture/Compare
  18          sfr16 PCA0CP1  = 0xeb;                    // PCA0 Module 2 Capture/Compare
  19          sfr16 PCA0CP2  = 0xed;                    // PCA0 Module 2 Capture/Compare
  20          sfr16 PCA0     = 0xf9;                    // PCA0 counter
  21          
  22          //-----------------------------------------------------------------------------
  23          // Global CONSTANTS
  24          //-----------------------------------------------------------------------------
  25          
  26          #define SYSCLK       49000000             // SYSCLK frequency (Hz)
  27          #define BAUDRATE     115200               // UART0 Baudrate (bps)
  28          
  29          #define MDCLK        2457600              // Modulator Clock (Hz)
  30          #define OWR          10                   // desired Output Word Rate in Hz
  31          
  32          #define VREF         2530                 // External VREF (x 10^-2 V)
  33          //------------------------------------------------------------------------------
  34          //------------------------------------------------------------------------------
  35          long xdata sample_array[128];
  36          long ADC_OutputVal=0;         // Concatenated ADC output value
  37          int   cyz;
  38          //-----------------------------------------------------------------------------
  39          // Function PROTOTYPES
  40          //-----------------------------------------------------------------------------
  41          void SYSCLK_Init (void);
  42          void PORT7_Init (void);
  43          void ADC0_Init (void);
  44          void IDA0_Init (void);
  45          void UART0_Init (void);
  46          void YJ_Init(void);
  47          void Write_CHAR(unsigned char yjchar);
  48          
  49          //-----------------------------------------------------------------------------
  50          // MAIN Routine
  51          //-----------------------------------------------------------------------------
  52          void main (void) {
  53   1      
  54   1      
  55   1      
C51 COMPILER V7.00  F350_ADC_BUFFERED_2                                                    02/08/2009 08:08:02 PAGE 2   

  56   1                         unsigned int i,g;
  57   1                         float average;
  58   1                         unsigned char e11,e22,e33,e44;
  59   1                         unsigned int e1,e2,e3,e4; 
  60   1      
  61   1         
  62   1                         PCA0MD &= ~0x40;                      // disable watchdog timer 
  63   1      
  64   1                         SYSCLK_Init();                         // Initialize system clock to 49 MHz
  65   1      
  66   1                         PORT7_Init();                           // Initialize crossbar and GPIO
  67   1      
  68   1        
  69   1                   for(i=0;i<128;i++)
  70   1                        {
  71   2                    sample_array[i]=0;
  72   2                
  73   2                        }
  74   1      
  75   1                         ADC0_Init();                           // 初始化ADC0
  76   1      
  77   1                         UART0_Init();                          // 初始化UART0
  78   1      
  79   1                         EA = 1;                                // 使能总中断
  80   1      
  81   1                         printf("\nMeasurements using the 24-bit ADC in C8051F350\n");
  82   1                         printf("\nCalibrating ...\n");
  83   1      
  84   1                         EIE1 &= ~0x08;                         // 不使能 ADC0 中断
  85   1      
  86   1                         ADC0MD |= 0x01;                        // 完全内部校准
  87   1      
  88   1                         while (!AD0CALC);                      // 等待转换完成
  89   1      
  90   1                         ADC0MD &= ~0x07;                       //  ADC0 为理想模式 
  91   1                                               
  92   1      
  93   1                         printf("Calibration complete\n\n");
  94   1      
  95   1                         AD0INT = 0;                            // clear pending sample indication
  96   1                         ADC0MD |= 0x83;                         // 启动连续转换
  97   1      
  98   1         while(1)                                        //处理采样值
  99   1                              {
 100   2      
 101   2            // 捕捉128次采样
 102   2                      printf ("Collecting 128 samples...\n");
 103   2            
 104   2                for (i = 0; i < 128; i++) 
 105   2                 {
 106   3                      while(!AD0INT);                     //等待转换完成
 107   3                      AD0INT = 0;                         //清 AD0 中断标志
 108   3      
 109   3               // concatenate ADC0 data bytes to form the 24-bit value
 110   3       
 111   3                              ADC_OutputVal = ADC0H;
 112   3                      ADC_OutputVal =ADC_OutputVal<< 16;
 113   3                      ADC_OutputVal += (long)ADC0L + ((long)ADC0M << 8);
 114   3                      sample_array[i] = ADC_OutputVal;
 115   3                       
 116   3                      }
 117   2                       
C51 COMPILER V7.00  F350_ADC_BUFFERED_2                                                    02/08/2009 08:08:02 PAGE 3   

 118   2                for(i=0;i<128;i++)
 119   2                              {
 120   3                        average=average+(float)sample_array[i];
 121   3                
 122   3                              }
 123   2                    average=average/128;
 124   2                        average=average/256/256/256;
 125   2                        average=average*VREF;
 126   2                        average=average*2;
 127   2                        average=average;
 128   2      
 129   2                        printf("ADC Vin = %6d mV",(int)average);
 130   2            
 131   2                    cyz=(int)average;
 132   2                        e1=cyz/1000;
 133   2                        e2=(cyz-1000*e1)/100;
 134   2                        e3=(cyz-1000*e1-100*e2)/10;
 135   2                        e4=cyz-1000*e1-100*e2-10*e3;
 136   2                        g=0;
 137   2                        do
 138   2                        {
 139   3             
 140   3                          if(g==e1)e11=0x30+g;
 141   3                                  
 142   3                              if(g==e2)e22=0x30+g;
 143   3                                 
 144   3                      if(g==e3)e33=0x30+g;
 145   3                                 
 146   3                              if(g==e4)e44=0x30+g;
 147   3                                  
 148   3                          g++;
 149   3                         }while(g<10);
 150   2              
 151   2                   YJ_Init();                                      //液晶显示采样值
 152   2                   for(i=0;i<4000;i++);
 153   2                   for(i=0;i<4000;i++);
 154   2                   for(i=0;i<4000;i++);
 155   2                       Write_CHAR(e11);
 156   2                       Write_CHAR(0x2e);
 157   2                       Write_CHAR(e22);
 158   2                       Write_CHAR(e33);
 159   2                       Write_CHAR(e44);
 160   2                       Write_CHAR(0x56);
 161   2                       for(i=0;i<4000;i++);
 162   2                   for(i=0;i<4000;i++);
 163   2                   for(i=0;i<4000;i++);
 164   2                       }
 165   1      

⌨️ 快捷键说明

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