?? ad7705.lst
字號:
C51 COMPILER V8.12 AD7705 11/24/2008 10:34:37 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE AD7705
OBJECT MODULE PLACED IN AD7705.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE AD7705.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////////////////////////////////////////////
2 ////Copyright (c) 2008,重慶大唐測控系統有限公司
3 ////All rights reserved.
4 ////
5 ////文件名稱:AD7705.C
6 ////摘 要:
7 //// 1、使用2.4576M晶體
8 //// 2、先復位芯片 adc_rest()
9 //// 3、再初始化芯片 adc1_init()
10 //// 4、讀取一個通道的AD值 adc1_read_value()
11 /////////////////////////////////////////////////////////////////////////////
12 ////當前版本:1.1.2
13 ////作 者:yangxd
14 ////完成日期:2008-11-23
15 /////////////////////////////////////////////////////////////////////////////
16
17 #include "AD7705.h"
18
19 /************************************************
20 功能:延時
21 參數:循環次數
22 返回:無
23 ************************************************/
24 void adc_delay(unsigned char NUM)
25 {
26 1 for(;NUM>0;NUM--);
27 1 }
28 /************************************************
29 功能:寫入AD芯片一個字節
30 參數:要寫入的命令或參數
31 返回:無
32 ************************************************/
33 void write_adc_byte(unsigned char chr)
34 {
35 1 unsigned char i;
36 1
37 1 for(i=0;i<8;i++)
38 1 {
39 2 ADC_CLK= 0;
40 2 chr=chr<<1;
41 2 ADC_DI= CY;
42 2 ADC_CLK= 1;
43 2 }
44 1 ADC_CLK = 1;
45 1 }
46 /************************************************
47 功能:從AD芯片讀取一個字(16位)
48 參數:無
49 返回:讀取的字(16位)
50 ************************************************/
51 unsigned int read_adc_word()
52 {
53 1 unsigned char i;
54 1 unsigned int coder = 0;
55 1
C51 COMPILER V8.12 AD7705 11/24/2008 10:34:37 PAGE 2
56 1 for(i=0;i<16;i++)
57 1 {
58 2 ADC_CLK = 0;
59 2 coder = coder<<1;
60 2 if(ADC_DO)coder+=1;
61 2 ADC_CLK = 1;
62 2 }
63 1 ADC_CLK = 1;
64 1 return(coder);
65 1 }
66 /************************************************
67 功能:AD芯片復位
68 參數:無
69 返回:無
70 ************************************************/
71 void adc_rest()
72 {
73 1 unsigned char i,j;
74 1
75 1 ADC_DI = 1;
76 1 ADC_CLK = 1;
77 1 ADC1_CS = 1;
78 1 ADC2_CS = 1;
79 1
80 1 ADC_RESET = 0;
81 1 for(i=200;i>0;i--)
82 1 for(j=200;j>0;j--);
83 1 ADC_RESET = 1;
84 1 }
85 /************************************************
86 功能:AD芯片初始化
87 參數:calmode 工作模式選擇(如:ADC_SELF ……)
88 gainsetting 輸入增益選擇(如:ADC_GAIN_128 ……)
89 operation 單極性/雙極性(如:ADC_BIPOLAR ……)
90 rate 輸出更新率(如:ADC_50 ……)
91 返回:無
92 ************************************************/
93 void adc1_init(unsigned char calmode, unsigned char gainsetting, unsigned char operation, unsigned char ra
-te)
94 {
95 1 ADC1_CS = 0;
96 1 write_adc_byte(0xFF);
97 1 write_adc_byte(0xFF);
98 1 write_adc_byte(0xFF);
99 1 write_adc_byte(0xFF);
100 1 ADC1_CS = 1;
101 1 adc_delay(100);
102 1
103 1 ADC1_CS = 0;
104 1 write_adc_byte( 0x20 );//
105 1 ADC1_CS = 1;
106 1 adc_delay(100);
107 1
108 1 ADC1_CS = 0;
109 1 write_adc_byte( rate );//
110 1 ADC1_CS = 1;
111 1 adc_delay(100);
112 1
113 1 ADC1_CS = 0;
114 1 write_adc_byte( 0x10 );//
115 1 ADC1_CS = 1;
116 1 adc_delay(100);
C51 COMPILER V8.12 AD7705 11/24/2008 10:34:37 PAGE 3
117 1
118 1 ADC1_CS = 0;
119 1 write_adc_byte( calmode|gainsetting|operation);//
120 1 ADC1_CS = 1;
121 1 adc_delay(100);
122 1 }
123 /************************************************
124 功能:讀取AD轉換碼
125 參數:通道號 如:1、2
126 返回:讀取的AD轉換結果(如果等于零表示正忙)
127 ************************************************/
128 unsigned int adc1_read_value(unsigned char ch)
129 {
130 1 unsigned int value;
131 1 if(!ADC1_DRDY)
132 1 {
133 2 ADC1_CS = 0;
134 2 if(ch == 1)
135 2 write_adc_byte(0x38);//
136 2 else if(ch == 2)
137 2 write_adc_byte(0x39);//
138 2 else {ADC1_CS = 1;return 0;}
139 2 ADC1_CS = 1;
140 2 adc_delay(1);
141 2 ADC1_CS = 0;
142 2 value = read_adc_word();
143 2 ADC1_CS = 1;
144 2 return value;
145 2 }
146 1 else
147 1 {
148 2 return 0;
149 2 }
150 1 }
151 /************************************************
152 功能:AD芯片初始化
153 參數:calmode 工作模式選擇(如:ADC_SELF ……)
154 gainsetting 輸入增益選擇(如:ADC_GAIN_128 ……)
155 operation 單極性/雙極性(如:ADC_BIPOLAR ……)
156 rate 輸出更新率(如:ADC_50 ……)
157 返回:無
158 ************************************************/
159 void adc2_init(unsigned char calmode, unsigned char gainsetting, unsigned char operation, unsigned char ra
-te)
160 {
161 1 ADC2_CS = 0;
162 1 write_adc_byte(0xFF);
163 1 write_adc_byte(0xFF);
164 1 write_adc_byte(0xFF);
165 1 write_adc_byte(0xFF);
166 1 ADC2_CS = 1;
167 1 adc_delay(100);
168 1
169 1 ADC2_CS = 0;
170 1 write_adc_byte( 0x20 );//
171 1 ADC2_CS = 1;
172 1 adc_delay(100);
173 1 ADC2_CS = 0;
174 1 write_adc_byte( rate );//
175 1 ADC2_CS = 1;
176 1 adc_delay(100);
177 1 ADC2_CS = 0;
C51 COMPILER V8.12 AD7705 11/24/2008 10:34:37 PAGE 4
178 1 write_adc_byte( 0x10 );//
179 1 ADC2_CS = 1;
180 1 adc_delay(100);
181 1 ADC2_CS = 0;
182 1 write_adc_byte( calmode|gainsetting|operation);//
183 1 ADC2_CS = 1;
184 1 adc_delay(100);
185 1 }
186 /************************************************
187 功能:讀取AD轉換碼
188 參數:通道號 如:0、1
189 返回:讀取的AD轉換結果(如果等于零表示正忙)
190 ************************************************/
191 unsigned int adc2_read_value(unsigned char ch)
192 {
193 1 unsigned int value;
194 1 if(!ADC2_DRDY)
195 1 {
196 2 ADC2_CS = 0;
197 2 if(ch == 1)
198 2 write_adc_byte(0x38);//
199 2 else if(ch == 2)
200 2 write_adc_byte(0x39);//
201 2 else {ADC1_CS = 1;return 0;}
202 2 ADC2_CS = 1;
203 2 adc_delay(1);
204 2 ADC2_CS = 0;
205 2 value = read_adc_word();
206 2 ADC2_CS = 1;
207 2 return value;
208 2 }
209 1 else
210 1 {
211 2 return 0;
212 2 }
213 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 313 ----
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 + -