📄 adc0832.lst
字号:
C51 COMPILER V7.20 ADC0832 12/16/2007 11:15:14 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN .\ADC0832.obj
COMPILER INVOKED BY: E:\Program Files\keil\C51\BIN\C51.EXE D:\07.12\shixi\ADC0832.C BROWSE DEBUG OBJECTEXTEND PRINT(.\AD
-C0832.lst) OBJECT(.\ADC0832.obj)
line level source
1 #include "main.h"
2 uchar disdat[6];
3 uchar dy,dydat;// 电压值
4 bit qdzq,zhzq;//定义两个位变量:ad芯片启动正确,数据转换正确
5
6
7 void initadc(void)
8 {CLK=0;
9 1 TLC0832=1;
10 1 ADO=0;
11 1 DI=0;
12 1 qdzq=0;
13 1 }
14
15 void read0832(void)// 读12个数 ,去掉最大的和最小的,然后取平均
16 {uchar rddat[12];
17 1 uint temp1;
18 1 uchar i,temp2;
19 1 for(i=0;i<12;i++)
20 1 rddat[i]=readadc();
21 1
22 1 if(rddat[11]<rddat[10])
23 1 {temp2=rddat[11];
24 2 rddat[11]=rddat[10];
25 2 rddat[10]=temp2;
26 2 }
27 1 for(i=0;i<10;i++)
28 1 {if(rddat[i]>rddat[11])
29 2 {temp2=rddat[11];
30 3 rddat[11]=rddat[i];
31 3 rddat[i]=temp2;
32 3 }
33 2 else
34 2 {if(rddat[i]<rddat[10])
35 3 {temp2=rddat[10];
36 4 rddat[10]=rddat[i];
37 4 rddat[i]=temp2;
38 4 }
39 3 }
40 2 }
41 1 for(temp1=0,i=0;i<10;i++)
42 1 temp1+=(uint)rddat[i];
43 1 temp1=temp1/10;
44 1 dy=(uchar)temp1;
45 1 }
46
47 unsigned char readadc(void)
48 {
49 1 unsigned char dat,i;
50 1
51 1 CLK=0; //芯片复位
52 1 TLC0832=1;
53 1 _nop_();
54 1 TLC0832=0;
C51 COMPILER V7.20 ADC0832 12/16/2007 11:15:14 PAGE 2
55 1 _nop_();
56 1
57 1 DI=1; //启动位
58 1 CLK=1;
59 1 _nop_();
60 1 CLK=0;
61 1
62 1 DI=1; //配置位1
63 1 CLK=1;
64 1 _nop_();
65 1 CLK=0;
66 1
67 1 DI=1; //配置位2
68 1 CLK=1;
69 1 _nop_();
70 1
71 1 CLK=0; //空闲位
72 1 _nop_();
73 1 CLK=1;
74 1 _nop_();
75 1 CLK=0;
76 1
77 1
78 1 for(i=0;i<8;i++)
79 1 { //读出8字节数据
80 2 dat=dat<<1;
81 2 _nop_();
82 2 CLK=1;
83 2 //这里要先1后0...如果是先0后1则输出结果错误...
84 2 if(ADO)
85 2 {
86 3 dat|=0x01;
87 3 }
88 2 _nop_();
89 2 CLK=0;
90 2 }
91 1
92 1 TLC0832=1; //关闭芯片
93 1 return(dat); //返回数据
94 1 }
95
96 main()
97 {float dy1;
98 1 uint m;
99 1 TMOD=0x21;
100 1 SCON=0x40;
101 1 TH1=0xFA;
102 1 TL1=0xFA;
103 1 PCON=0x80;
104 1 //PS=1;
105 1 TR1=1;
106 1 //EA=1;
107 1 //ES=1;
108 1 //ET1=0;
109 1 while(1)
110 1
111 1 {initadc();
112 2 read0832();
113 2 dydat=dy;
114 2 TI=0;
115 2 SBUF=dydat;
116 2 dy1=vref/256.0;
C51 COMPILER V7.20 ADC0832 12/16/2007 11:15:14 PAGE 3
117 2 dy1=dy1*dy;
118 2 if(dy1<0.1)
119 2 {dy1=dy1*10000.0;
120 3 disdat[0]=0;
121 3 disdat[1]=0;
122 3 m=(uint)dy1/100;
123 3 disdat[2]=(uchar)m;
124 3 dy1=dy1-disdat[2]*100;
125 3 disdat[3]=(uchar)dy1/10;
126 3 dy1=dy1-disdat[3]*10;
127 3 disdat[4]=(uchar)dy1;
128 3 disdat[5]=0;
129 3 }
130 2 else if(dy1<1.0)
131 2 {dy1=dy1*10000.0;
132 3 disdat[0]=0;
133 3 m=(uint)dy1/1000;
134 3 disdat[1]=(uchar)m;
135 3 dy1=dy1-disdat[1]*1000;
136 3 m=(uint)dy1/100;
137 3 disdat[2]=(uchar)m;
138 3 dy1=dy1-disdat[2]*100;
139 3 disdat[3]=(uchar)dy1/10;
140 3 dy1=dy1-disdat[3]*10;
141 3 disdat[4]=(uchar)dy1;
142 3 disdat[5]=0;
143 3 }
144 2 else
145 2 {dy1=dy1*10000.0;
146 3 m=(uint)dy1/10000;
147 3 disdat[0]=(uchar)m;
148 3 dy1=dy1-disdat[0]*10000;
149 3 m=(uint)dy1/1000;
150 3 disdat[1]=(uchar)m;
151 3 dy1=dy1-disdat[1]*1000;
152 3 m=(uint)dy1/100;
153 3 disdat[2]=(uchar)m;
154 3 dy1=dy1-disdat[2]*100;
155 3 disdat[3]=(uchar)dy1/10;
156 3 dy1=dy1-disdat[3]*10;
157 3 disdat[4]=(uchar)dy1;
158 3 disdat[5]=0;
159 3 }
160 2
161 2
162 2 /* disdat[0]=dy/100;
163 2 disdat[1]=(dy-disdat[0]*100)/10;
164 2 disdat[2]=dy%10; */
165 2 display();
166 2 //sendbyte();
167 2 /* TLC0832=0;
168 2 DI=0 ;
169 2 ADO=0;
170 2 CLK=0;
171 2 TLC0832=1;
172 2 DI=1;
173 2 ADO=1;
174 2 CLK=1;
175 2 */
176 2
177 2 }
178 1 }
C51 COMPILER V7.20 ADC0832 12/16/2007 11:15:14 PAGE 4
179 //void sendbyte()
180 //{
181 // SBUF=dydat;
182 // while(TI==0);
183 // TI=0;
184 //}
185
186 //void senddy(void) interrupt 4
187 // {
188 // RI=0; //排出TI的干扰
189 // if(TI)
190 // {
191 // TI=0;
192 // SBUF=dydat;
193 // }
194 //
195 // }
196 /*uchar rdbety(void)
197 {uchar i,dat;
198 while(zhzq)
199 { while(qdzq)
200 {DI=1;//START
201 TLC0832=0;
202 / /_nop_();
203 CLK=1;
204 //_nop_();//DI数据保持90ns即可
205 DI=1;//SEND SGL
206 CLK=0;
207 _nop_();
208 CLK=1;
209 DI=0;//SEND EVEN
210 CLK=0;
211 _nop_();
212 CLK=1;
213 _nop_;
214 CLK=0;
215 ADO=1;//开始检测ADO是否为低,为低表示有数据
216 _nop_();
217 CLK=1;
218 if(ADO)
219 qdzq=1;
220 else
221 qdzq=0;//说明启动正确,接下来开始接受数据 }
222
223 CLK=1;
224
225 }
226
227 qdzq=1;
228 return(dat)
229 }
230 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 702 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 20
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
C51 COMPILER V7.20 ADC0832 12/16/2007 11:15:14 PAGE 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -