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

📄 analog.lst

📁 cygnal上的数据采集的程序(带实时时钟)
💻 LST
字号:
C51 COMPILER V7.50   ANALOG                                                                11/15/2005 22:36:22 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ANALOG
OBJECT MODULE PLACED IN Analog.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Analog.C LARGE OPTIMIZE(0,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //-----------------------------------------------------------------------------
   2          // Copyright (c) 2002 Jim Brady
   3          // Do not use commercially without author's permission
   4          // Last revised August 2002
   5          // Net ANALOG.C
   6          //
   7          // This module handles the analog inputs which are external temperature
   8          // sensor, the on-chip temperature sensor, and operating voltage.
   9          //-----------------------------------------------------------------------------
  10          #include <string.h>
  11          #include <stdlib.h>
  12          #include "C8051f.h"
  13          #include "serial1.h"
  14          #include "analog.h"
  15          
  16          
  17          sfr16 ADC0     = 0xbe;                 // ADC0 data
  18          
  19          //--------------------------------------------------------------------------
  20          // Initialize the A/D converter
  21          // 
  22          //--------------------------------------------------------------------------
  23          void ADC_Init(void)
  24          {
  25   1              ADC0CN = 0x81;                      // ADC0 enabled; normal tracking
  26   1                                              // mode; ADC0 conversions are initiated 
  27   1                                              // on write to AD0BUSY; ADC0 data is
  28   1                                              // left-justified
  29   1              REF0CN = 0x07;                      // enable temp sensor, on-chip VREF,
  30   1                                              // and VREF output buffer
  31   1              AMX0CF = 0x00;
  32   1              AMX0SL = MUX_CPU_TEMP;  
  33   1      
  34   1          ADC0CF = (SYSCLK/2500000) << 3;     // ADC conversion clock = 2.5MHz
  35   1              ADC0CF &= 0x0f8;                     // PGA gain = 2
  36   1              EIE2 &= ~0x02;                      // disable ADC0 EOC interrupt
  37   1              EIE1 &= ~0x04;                      // disable ADC0 window compare interrupt
  38   1      }
  39          
  40          
  41          
  42          //--------------------------------------------------------------------------
  43          // This function is a little state machine which reads one analog
  44          // inputs at a time, out of the 3 possible inputs
  45          //  1. On-chip temperature
  46          //  2. External air temperature
  47          //  3. CPU operating voltage
  48          //--------------------------------------------------------------------------
  49          unsigned long Read_Analog_Inputs(unsigned char mux_select)
  50          {
  51   1              unsigned long idata temp_long;
  52   1      
  53   1              temp_long = 0;
  54   1      
  55   1              AMX0SL = mux_select;
C51 COMPILER V7.50   ANALOG                                                                11/15/2005 22:36:22 PAGE 2   

  56   1              AD0INT = 0;                     
  57   1              AD0BUSY = 1;                     
  58   1          while (AD0INT == 0);
  59   1              AD0INT = 0;                     
  60   1              AD0BUSY = 1;                     
  61   1          while (AD0INT == 0);
  62   1      
  63   1              switch (mux_select)
  64   1              {
  65   2                      case MUX_CPU_TEMP:
  66   2                      {
  67   3           
  68   3                              temp_long = ADC0 - 42380/2;
  69   3                          temp_long = (temp_long * 200L) / 156;
  70   3      
  71   3                              break;
  72   3                      }
  73   2                      case MUX_AN0:
  74   2                      {
  75   3                              temp_long = ADC0;
  76   3                              temp_long = 24*temp_long/655;
  77   3                              break;
  78   3                      }
  79   2      
  80   2                      case MUX_AN1:
  81   2                      {
  82   3                              temp_long = ADC0;
  83   3                              temp_long = 24*temp_long/655;
  84   3                              break;
  85   3                      }
  86   2      
  87   2                      default:
  88   2                      {
  89   3                              return 0;
  90   3                      }
  91   2              }
  92   1              ADC0 = 0;
  93   1              return temp_long;
  94   1      }
  95           
  96          
  97           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    257    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      1    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      4    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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