📄 adccaijinonidianya.lst
字号:
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE ADCCAIJINONIDIANYA
OBJECT MODULE PLACED IN C:\DOCUME~1\ADMINI~1\桌面\ADC采~1\ADCCAIJINONIDIANYA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\ADMINI~1\桌面\ADC采~1\ADCCAIJINONIDIANYA.C DB SB OE OT(0)
line level source
1 /************************************************************
2 作者:邱星凌
3 版本:3.0
4 描述:主要演示使用ADC0832通道1(CH1)采集模拟电压,并显示在数码管上
5 由于ADC0832的 Vref=5V,故当外部输入为5V时,转换值实际为255(#0FFH)
6 当然也可以直接用手按用来模拟0-5V的电压。
7 硬件:在:"AD输入口"的"CH1"上加0-5V的电压,并调节大小,观查显示变化
8 *************************************************************/
9
10 #include <reg52.h>
11 #define FOSC (12000000UL)
12 #define OSC (12)
13 #define TIMER0 1
14 typedef unsigned char uchar;
15 typedef unsigned int uint;
16 #define T_05ms (65536-(uchar)(FOSC/(12*200)))
17 code scan[6]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
18 code scan1[6]={0x7D,0xBD,0xDD,0xED,0xF5,0xF9};
19 code v[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
20 uchar a[6]={0xFF,0xFF,0xFF,0,0,0};
21 uchar a1=0,c=0; //采集电压转换结果
22 uchar b=0;
23 uchar kg=0,n=0,m=0;//标志变量
24 uchar i=0,j=0,i1=0,i2=0,i3=0,i4=0; //循环与延时变量
25 sbit ADC_CS=P3^5;
26 sbit ADC_CLK=P2^1;
27 sbit ADC_DI=P3^6;
28 sbit ADC_DO=P3^7;
29 bit FADC_CLK; //ADC_CLK的标志变量
30 /*========延时函数============*/
31 void delay(void)
32 {
33 1 for(i=0;i<5;i++)
34 1 {
35 2 for(j=0;j<10;j++) ;
36 2 }
37 1 }
38
39 void delay1(void)
40 {
41 1 for(i1=0;i1<3;i1++);
42 1 }
43
44 void delay2(void)
45 {
46 1 for(i2=0;i2<3;i2++);
47 1 }
48
49 /*==============自定义脉冲函数================*/
50 void pulsh(void)
51 {
52 1 FADC_CLK=1;
53 1 ADC_CLK=1;
54 1 delay1();
55 1 ADC_CLK=0;
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 2
56 1 FADC_CLK=0;
57 1 delay1();
58 1 }
59
60 /*=============二进制到bcd码的转换====================*/
61 void bin_bcd(void)
62 {
63 1 b=a1/10;
64 1 a[5]=a1%10;
65 1 a[4]=b%10;
66 1 a[3]=b/10;
67 1 a1=0;
68 1 b=0;
69 1 }
70
71 /*==========ADC采集函数电压转换============*/
72 void ADC_CH1(void)
73 {
74 1 ADC_CS=0;
75 1 m++; //NOP一下
76 1 ADC_CS=1;
77 1 m--;
78 1 delay2();
79 1 ADC_CS=0;
80 1 ADC_DI=1;
81 1 pulsh();
82 1 pulsh();
83 1 pulsh();
84 1 for(i3=0;i3<8;i3++)
85 1 {
86 2 pulsh();
87 2 a1 |= ADC_DO;
88 2 a1=a1<<1;
89 2 }
90 1 c=a1;
91 1 pulsh();
92 1 a1=0;
93 1 for(i4=0;i4<8;i4++)
94 1 {
95 2 pulsh();
96 2 a1 |=ADC_DO;
97 2 a1=a1<<1; //此处a已经清零了,所有可以用同样地方法
98 2 }
99 1 if(c==a1)
100 1 {
101 2 n=1;
102 2 ADC_CS=1;
103 2 ADC_CLK=0;
104 2 ADC_DI=1;
105 2 ADC_DO=1;
106 2 }
107 1 }
108 void ADC_CH0(void)
109 {
110 1 ADC_CS=0;
111 1 m++; //NOP一下
112 1 ADC_CS=1;
113 1 m--;
114 1 delay2();
115 1 ADC_CS=0;
116 1 ADC_DI=1;
117 1 pulsh();
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 3
118 1 pulsh();
119 1 ADC_DI=0;
120 1 pulsh();
121 1 ADC_DI=1;
122 1 for(i3=0;i3<8;i3++)
123 1 {
124 2 pulsh();
125 2 a1 |= ADC_DO;
126 2 a1=a1<<1;
127 2 }
128 1 c=a1;
129 1 pulsh();
130 1 a1=0;
131 1 for(i4=0;i4<8;i4++)
132 1 {
133 2 pulsh();
134 2 a1 |=ADC_DO;
135 2 a1=a1<<1; //此处a已经清零了,所有可以用同样地方法
136 2 }
137 1 if(c==a1)
138 1 {
139 2 n=1;
140 2 ADC_CS=1;
141 2 ADC_CLK=0;
142 2 ADC_DI=1;
143 2 ADC_DO=1;
144 2 }
145 1 }
146
147
148 /*==================中断服务函数===================*/
149 static void Timer0_isr(void) interrupt TIMER0
150 {
151 1 TR0=0;
152 1 TH0=T_05ms/256;
153 1 TL0=T_05ms%256;
154 1 TR0=1;
155 1 switch (kg)
156 1 {
157 2 case 0:
158 2 if(FADC_CLK==1)
159 2 {
160 3 P2=scan[kg];
161 3 P0=0xFF;
162 3 }
163 2 else
164 2 {
165 3 P2=scan1[kg];
166 3 P0=0xFF;
167 3 }
168 2 break;
169 2 case 1:
170 2 if(FADC_CLK==1)
171 2 {
172 3 P2=scan[kg];
173 3 P0=v[a[kg]];
174 3 }
175 2 else
176 2 {
177 3 P2=scan1[kg];
178 3 P0=v[a[kg]];
179 3 }
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 4
180 2 break;
181 2 case 2:
182 2 if(FADC_CLK==1)
183 2 {
184 3 P2=scan[kg];
185 3 P0=v[a[kg]];
186 3 }
187 2 else
188 2 {
189 3 P2=scan1[kg];
190 3 P0=v[a[kg]];
191 3 }
192 2 break;
193 2 case 3:
194 2 if(FADC_CLK==1)
195 2 {
196 3 P2=scan[kg];
197 3 P0=v[a[kg]];
198 3 }
199 2 else
200 2 {
201 3 P2=scan1[kg];
202 3 P0=v[a[kg]];
203 3 }
204 2 break;
205 2 case 4:
206 2 if(FADC_CLK==1)
207 2 {
208 3 P2=scan[kg];
209 3 P0=v[a[kg]];
210 3 }
211 2 else
212 2 {
213 3 P2=scan1[kg];
214 3 P0=v[a[kg]];
215 3 }
216 2 break;
217 2 case 5:
218 2 if(FADC_CLK==1)
219 2 {
220 3 P2=scan[kg];
221 3 P0=v[a[kg]];
222 3 }
223 2 else
224 2 {
225 3 P2=scan1[kg];
226 3 P0=v[a[kg]];
227 3 }
228 2 break;
229 2 default :
230 2 break;
231 2 }
232 1 kg++;
233 1 if(kg==6)
234 1 {
235 2 kg=0;
236 2 }
237 1 }
238
239 /*====================中断初始函数==========================*/
240 static void Timer0_initialize(void)
241 {
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 5
242 1 EA=0;
243 1 TR0=0;
244 1 TMOD=0x11;
245 1 TH0=T_05ms/256;
246 1 TL0=T_05ms%256;
247 1 TF0=0;
248 1 PT0=1;
249 1 ET0=1;
250 1 TR0=1;
251 1 EA=1;
252 1 }
253
254 void main (void)
255 {
256 1 P0=0xFF;
257 1 P1=0xFF;
258 1 P2=0xFF;
259 1 P3=0xFF;
260 1 Timer0_initialize();
261 1 delay();
262 1 while(1)
263 1 {
264 2 while(n!=1)
265 2 {
266 3 ADC_CH1();
267 3 ADC_CH0();
268 3 }
269 2 bin_bcd();
270 2 delay();
271 2 delay();
272 2 n=0;
273 2 }
274 1 }
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
ADC_CLK. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
delay. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
a1 . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
uchar. . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
i1 . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1
i2 . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
i3 . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0003H 1
i4 . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0004H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
scan . . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 12
pulsh. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
ADC_DI . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
ADC_DO . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ADC_CS . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
uint . . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
delay1 . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
delay2 . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
bin_bcd. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
FADC_CLK . . . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
Timer0_initialize. . . . . . . . . . . STATIC CODE PROC 0000H -----
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
kg . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0005H 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
scan1. . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 000CH 12
a. . . . . . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0006H 6
b. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000CH 1
c. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000DH 1
Timer0_isr . . . . . . . . . . . . . . STATIC CODE PROC 0000H -----
ADC_CH0. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
ADC_CH1. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
i. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000EH 1
j. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000FH 1
m. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0010H 1
n. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0011H 1
v. . . . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0018H 20
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1114 ----
CONSTANT SIZE = 44 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.09 ADCCAIJINONIDIANYA 11/21/2007 17:53:47 PAGE 7
DATA SIZE = 18 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -