📄 analog.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 + -