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

📄 analog.lst

📁 C8051F控制网卡芯片实现网络通信功能。显示出第三代51单片机的强大之处
💻 LST
字号:
C51 COMPILER V7.07   ANALOG                                                                11/25/2003 15:47:43 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE ANALOG
OBJECT MODULE PLACED IN ANALOG.OBJ
COMPILER INVOKED BY: D:\KEIL707\C51\BIN\C51.EXE ANALOG.C OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt 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 "net.h"
  14          #include "serial.h"
  15          #include "analog.h"
  16          
  17          extern char xdata text[];
  18          UINT idata cpu_temperature, air_temperature, cpu_voltage;
  19          UCHAR idata mux_select;
  20          
  21          sfr16 ADC0     = 0xbe;                 // ADC0 data
  22          
  23          //--------------------------------------------------------------------------
  24          // Initialize the A/D converter
  25          // 
  26          //--------------------------------------------------------------------------
  27          void init_adc(void)
  28          {
  29   1              ADC0CN = 0x81;                      // ADC0 enabled; normal tracking
  30   1                                              // mode; ADC0 conversions are initiated 
  31   1                                              // on write to AD0BUSY; ADC0 data is
  32   1                                              // left-justified
  33   1              REF0CN = 0x07;                      // enable temp sensor, on-chip VREF,
  34   1                                              // and VREF output buffer
  35   1              mux_select = MUX_CPU_TEMP;                      // CPU on-chip temp sensor
  36   1              AMX0SL = MUX_CPU_TEMP;  
  37   1      
  38   1         ADC0CF = (SYSCLK/2500000) << 3;     // ADC conversion clock = 2.5MHz
  39   1       //  ADC0CF |= 0x01;                     // PGA gain = 2
  40   1         EIE2 &= ~0x02;                      // disable ADC0 EOC interrupt
  41   1         EIE1 &= ~0x04;                      // disable ADC0 window compare interrupt
  42   1      }
  43          
  44          
  45          
  46          //--------------------------------------------------------------------------
  47          // This function is a little state machine which reads one analog
  48          // inputs at a time, out of the 3 possible inputs
  49          //  1. On-chip temperature
  50          //  2. External air temperature
  51          //  3. CPU operating voltage
  52          //--------------------------------------------------------------------------
  53          void read_analog_inputs(void)
  54          {
  55   1              ULONG idata temp_long;
C51 COMPILER V7.07   ANALOG                                                                11/25/2003 15:47:43 PAGE 2   

  56   1      
  57   1          AD0INT = 0;                      // clear conversion complete indicator
  58   1          AD0BUSY = 1;                     // initiate conversion
  59   1          while (AD0INT == 0);             // wait for conversion complete
  60   1              switch (mux_select)
  61   1              {
  62   2                      case MUX_CPU_TEMP:
  63   2                      temp_long = ADC0 - 42380/2;
  64   2                          temp_long= (temp_long * 200L) / 156;
  65   2                              cpu_temperature=temp_long;
  66   2                              AMX0SL = MUX_CPU_VOLTS;         // Select AIN1 for next read
  67   2                              mux_select = MUX_CPU_VOLTS;
  68   2                      break;
  69   2      
  70   2                      case MUX_CPU_VOLTS:
  71   2                              temp_long = ADC0;
  72   2                              temp_long = 24*temp_long/655;
  73   2                              cpu_voltage = temp_long;
  74   2                              AMX0SL = MUX_AIR_TEMP;          // Select on-chip temp sensor
  75   2                              mux_select = MUX_AIR_TEMP;
  76   2                      break;
  77   2      
  78   2                      case MUX_AIR_TEMP:
  79   2                              temp_long = ADC0;
  80   2                              temp_long = 24*temp_long/655;
  81   2                              air_temperature = temp_long;
  82   2                              AMX0SL = MUX_CPU_TEMP;   
  83   2                              mux_select = MUX_CPU_TEMP;
  84   2                      break;
  85   2      
  86   2                      default:
  87   2                              AMX0SL = MUX_CPU_TEMP;
  88   2                              mux_select = MUX_CPU_TEMP;
  89   2                      break;
  90   2              }
  91   1      }
  92           
  93          
  94           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    190    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      7       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 + -