📄 adc.lst
字号:
C51 COMPILER V7.06 ADC 01/03/2008 17:28:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ADC.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include<c8051f350.h>
3 #include"adc.h"
4 #include"variable.h"
5
6 /********************************************
7 函数名: Adc_init
8 功能: ADC初始化
9 形式参数:无
10 返回值:无
11 ********************************************/
12 void Adc_init(void)
13 {
14 1 ADC0CN =0x10;//双极性输入,PGA增益=1
15 1 REF0CN = 0x03; // 基准电压控制寄存器
-
16 1 ADC0CF =0x04;//使用外部电压源
17 1 ADC0MD =0x80;//ADC0使能
18 1 ADC0BUF =0x00;
19 1 ADC0CLK =0x00;
20 1 ADC0DECH=0x04;//抽取比
21 1 ADC0DECL=0x00;
22 1 ADC0STA = 0x00; // 清ADC0状态寄存器
23 1 EIE1 &= ~0x08; // 禁止ADC0中断(查询采样时使用)
24 1 ADC0MD |= 0x01;// 全内部校准(偏移、斜率)
25 1 while (!AD0CALC);// 等待转换完成
26 1 ADC0MD &= ~0x07;// ADC0 为理想模式
27 1 AD0INT = 0; //clear pending sample indication
28 1 ADC0MD |= 0x83; // 启动连续转换
29 1 deg=0;//采样次数
30 1 }
31 /********************************************
32 函数名: Dac_init
33 功能: DAC初始化
34 形式参数:无
35 返回值:无
36 ********************************************/
37 void Dac_init(void)
38 {
39 1 IDA1CN = 0xF3;
40 1 }
41 /********************************************
42 函数名: Adc0_hdl
43 功能: 数据采样处理
44 形式参数:channel-通道代码
45 返回值:经过平均滤波后的采样值(补码表示)
46 ********************************************/
47 int Adc0_hdl(unsigned char channel)
48 {
49 1 unsigned char i;
50 1 int temp,ret_value;//,min_value,max_value
51 1 long temp_value=0;
52 1 ADC0MD=0x83;
53 1 ADC0MUX=channel;//通道选择
54 1 //AD0BUSY=1;
C51 COMPILER V7.06 ADC 01/03/2008 17:28:43 PAGE 2
55 1 while(!AD0INT);
56 1 AD0INT=0;
57 1 temp=ADC0H;//ret_value=ADC0;
58 1 temp<<=8;
59 1 temp+=ADC0M;
60 1 Adc0_buffer[deg]=temp;
61 1 //max_value=temp;
62 1 //min_value=temp;
63 1 for(i=0;i<8;i++)
64 1 {
65 2 //if(Adc0_buffer[i]>max_value)
66 2 // max_value=Adc0_buffer[i];
67 2 //if(Adc0_buffer[i]<min_value)
68 2 // min_value=Adc0_buffer[i];
69 2 temp_value+=Adc0_buffer[i];
70 2 }
71 1 //temp_value=temp_value-max_value-min_value+2;
72 1 temp_value=temp_value+4;
73 1 temp_value/=8;
74 1 ret_value=(int)temp_value;
75 1 deg++;
76 1 if(deg==8)
77 1 deg=0;
78 1 return ret_value;
79 1 }
80
81 int Adc0_hdl_f(unsigned char channel)
82 {
83 1 unsigned char i;
84 1 int s;
85 1 for(i=0;i<8;i++)
86 1 s=Adc0_hdl(channel);
87 1 return s;
88 1 }
89 /********************************************
90 函数名: Dac0_hdl
91 功能: DAC输出处理
92 形式参数:无
93 返回值:无
94 ********************************************/
95 void Dac_hdl(unsigned char Daout)
96 {
97 1 IDA1=Daout;
98 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 238 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 8
IDATA SIZE = ---- ----
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 + -