📄 jcb.lst
字号:
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE JCB
OBJECT MODULE PLACED IN jcb.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE jcb.c DEBUG OBJECTEXTEND
line level source
1 /*************************************************
2 ********
3 ********
4 ********
5 ********初稿:2005/1/4
6 ********
7 ********修改:2005-10-31
8 **************************************************/
9 #include<stdio.h>
10 #include<reg51.h>
11 #include<string.h>
12 #include <intrins.h>
13
14 #define Uchar unsigned char
15 #define Uint unsigned int
16
17 Uchar m1,dis,n1,n2,light;
18
19 sbit alarm=P3^5; //报警继电器
20 sbit alarm1=P3^6; //蜂鸣器
21 sbit alarm2=P3^7; //报警灯
22 sbit SD=P1^0; //试验
23 sbit XY=P1^1; //消音输入
24 bit flash;
25 bit sign1,sign2;
26
27 sbit DCLK1 =P3^2; //7816 电压
28 sbit DOUT1 =P1^6;
29 sbit DCS1 =P3^4;
30 sbit DOUT2 =P3^3; //7816 电流
31 //41010
32 sbit SI=P1^4;
33 sbit SCK=P1^3;
34 sbit CS2=P1^2;
35
36 sbit AD1=P0^5; //选择开关
37 sbit AD2=P0^6;
38 sbit AD3=P0^7;
39 Uchar select; //选择档位
40
41 sbit cathode=P1^7; //负极
42 sbit anode=P1^5; //正极
43 Uint num,num5,num1;
44 Uint turn,state;
45
46 Uint av1,av2;
47
48 Uint VOLT,CURR,aa,aa1,aa2,aa3,aa4,aa5; //电压,电流
49 unsigned long int mid1,mid2,mid3;
50 Uchar n;
51 void VIads7816(void)
52 {
53 1 Uchar i;
54 1 Uchar al=0,ah=0;
55 1 Uchar bl=0,bh=0;
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 2
56 1 av1=0;av2=0;
57 1 DOUT1=1;
58 1 DOUT2=1;
59 1 DCS1=0;
60 1
61 1 DCLK1=1;
62 1 DCLK1=0;
63 1 DCLK1=1;
64 1 DCLK1=0;
65 1
66 1 for(i=0;i<4;i++)
67 1 {
68 2 DCLK1=1;
69 2 DCLK1=0;
70 2 ah=(ah<<1);
71 2 bh=(bh<<1);
72 2 if(DOUT1)
73 2 {
74 3 ah=ah|0x01;
75 3 }
76 2 if(DOUT2)
77 2 {
78 3 bh=bh|0x01;
79 3 }
80 2 }
81 1
82 1 for(i=0;i<8;i++)
83 1 {
84 2 DCLK1=1;
85 2 DCLK1=0;
86 2 al=(al<<1);
87 2 bl=(bl<<1);
88 2 if(DOUT1)
89 2 {
90 3 al=al|0x01;
91 3 }
92 2 if(DOUT2)
93 2 {
94 3 bl=bl|0x01;
95 3 }
96 2
97 2 }
98 1 DCS1=1;
99 1 av1=ah;av1<<=8;av1|=al;//得到AD值
100 1 av2=bh;av2<<=8;av2|=bl;//得到AD值
101 1 }
102
103
104 void MCP41010(void) //量程0-255
105 {
106 1 unsigned char k,p,x;
107 1 x=turn;
108 1
109 1 k=0x13; //控制字,写数据,两个都有效
110 1 CS2=0;
111 1 for(p=0;p<8;p++)
112 1 {
113 2 SCK=0;
114 2 _nop_();
115 2 _nop_();
116 2
117 2 SI=(bit)(k&0x80);
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 3
118 2 SCK=1;
119 2 _nop_();
120 2 _nop_();
121 2 k<<=1;
122 2 }
123 1 _nop_();
124 1 _nop_();
125 1 _nop_();
126 1 _nop_();
127 1 _nop_();
128 1 for(p=0;p<8;p++)
129 1 {
130 2 SCK=0;
131 2 _nop_();
132 2 _nop_();
133 2 SI=(bit)(x&0x80);
134 2 SCK=1;
135 2 _nop_();
136 2 _nop_();
137 2 x<<=1;
138 2 }
139 1 _nop_();
140 1 _nop_();
141 1 _nop_();
142 1 _nop_();
143 1 _nop_();
144 1
145 1 CS2=1;
146 1
147 1 }
148
149
150 void begin(void)
151 {
152 1 SCON=0x50;
153 1 TMOD|=0X21;
154 1 TH1=0xFF;
155 1 TL1=0xFF;
156 1 //TH0=0xFA;
157 1 //TL0=0xFA;
158 1 PCON=PCON|0X80;
159 1 TR1=1;
160 1 TI=1;
161 1 ET0=1; /*T0 Enable*/
162 1 TR0 = 1;
163 1 EA=1;
164 1 alarm=1;
165 1 alarm1=alarm2=1;
166 1 }
167
168 main()
169 {
170 1 Uint z1;
171 1 begin();
172 1 while(1)
173 1 {
174 2 if(XY==0)
175 2 {
176 3 if(sign1|sign2)
177 3 z1=1;
178 3 else
179 3 z1=0;
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 4
180 3 }
181 2
182 2 if(((XY==0)|(SD==0)|(sign1||sign2))==0)
183 2 {alarm=1;alarm1=1;alarm2=1;}
184 2 else
185 2 {
186 3 if(SD==0) alarm1=0;
187 3 else alarm1=((((SD==0)|((sign1|sign2)&flash)|z1)));
188 3
189 3
190 3 //alarm1=(((!(SD==0)|((sign1|sign2)&flash)|z1)));
191 3 alarm2=!((((SD==0)|((sign1|sign2)&flash)|z1)));
192 3 alarm=!((SD==0)|(sign1&sign2));}
193 2
194 2 if((sign1|sign2)==0)
195 2 {
196 3 z1 = 0;
197 3 }
198 2 }
199 1 }
200
201
202
203 void intt3(void) interrupt 1
204 { static Uchar count;
205 1
206 1 if(AD1&AD2&AD3) select=0;
207 1 if(AD1&AD2&!AD3) select=1;
208 1 if(AD1&!AD2&AD3) select=2;
209 1 if(AD1&!AD2&!AD3) select=3;
210 1 if(!AD1&AD2&AD3) select=4;
211 1
212 1
213 1
214 1 if(num<31) num++;
215 1 else{num=0;count++;}
216 1
217 1 if(num<=15) //测量正
218 1 {cathode=1; anode=0;}
219 1
220 1
221 1
222 1 if(num>15) //测量负
223 1 {cathode=0; anode=1;}
224 1
225 1 if(num==10) { VIads7816();
226 2 mid1=av1;
227 2 mid2=av2;
228 2 mid3=(mid1*47/mid2);
229 2 if(mid3>3000) mid3=3000;
230 2 aa1=mid3;
231 2 }
232 1 if(num==25) { VIads7816();
233 2 mid1=av1;
234 2 mid2=av2;
235 2 mid3=(mid1*47/mid2);
236 2 if(mid3>3000) mid3=3000;
237 2 aa2=mid3;
238 2 }
239 1
240 1 if(aa1<=aa2) aa3=aa1;
241 1 else aa3=aa2;
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 5
242 1
243 1 num5++;
244 1 if(num5<=10) {
245 2 aa5+=aa3;}
246 1 else {aa=aa5/10;
247 2 aa5=0;
248 2 num5=0;}
249 1
250 1 if(count<3)
251 1 aa=250;
252 1 else
253 1 count=11;
254 1
255 1
256 1 if((num==10)||(num==25))
257 1 { printf("num=%d\n",num);
258 2
259 2 printf("aa=%d\n",aa);
260 2
261 2 printf("turn=%d\n",turn);
262 2
263 2 MCP41010();
264 2 }
265 1
266 1
267 1
268 1
269 1 if(((num>=5)&(num<15))|((num>=20)&(num<30))) //取样范围内
270 1 {if(select==0) //10K 档
271 2 {
272 3 {if (aa<40){if(num<15) sign1=1; else sign2=1;}
273 4 else {if(num<15) sign1=0; else sign2=0;}
274 4 }
275 3 }
276 2
277 2
278 2 if(select==1) //20K 档
279 2 {
280 3 {if (aa<51){if(num<15) sign1=1; else sign2=1;}
281 4 else {if(num<15) sign1=0; else sign2=0;}
282 4 }
283 3 }
284 2
285 2
286 2
287 2 if(select==2) //50K 档
288 2 {
289 3 {if (aa<81){if(num<15) sign1=1; else sign2=1;}
290 4 else {if(num<15) sign1=0; else sign2=0;}
291 4 }
292 3 }
293 2
294 2
295 2 if(select==3) //100 K
296 2 {
297 3 {if (aa<132){if(num<15) sign1=1; else sign2=1;}
298 4 else {if(num<15) sign1=0; else sign2=0;}
299 4 }
300 3 }
301 2
302 2 if(select==4) //200 K
303 2 {
C51 COMPILER V8.05a JCB 10/16/2008 19:15:36 PAGE 6
304 3 {if (aa<240){if(num<15) sign1=1; else sign2=1;}
305 4 else {if(num<15) sign1=0; else sign2=0;}
306 4 }
307 3 }
308 2 }
309 1
310 1
311 1 if(aa3<25000) {turn=(aa-30)/160+232;} //1000K-无穷大
312 1 if(aa3<=1100) {turn=(aa-30)/40+212;} //500-1000K
313 1 if(aa3<=550) {turn=((aa-30)*34+51816)/300;} //200-500K
314 1 if(aa3<=237) {turn=((aa-30)*36+12000)/100;} //100-200K
315 1 if(aa3<=132) {turn=((aa-30)*122+19176)/200;} //90-1000K
316 1 if(aa3<=122) {turn=((aa-30)*153+16422)/200;} //80-90K
317 1 if(aa3<=112) {turn=((aa-30)*173+14790)/200;} //70-80K
318 1 if(aa3<=101) {turn=((aa-30)*183+14076)/200;} //60-70K
319 1 if(aa3<=91) {turn=((aa-30)*234+11010)/200;} //50-60K
320 1 if(aa3<=81) {turn=((aa-30)*295+7956)/200;} //40-50K
321 1 if(aa3<=71) {turn=((aa-30)*32+660)/20;} //30-40K
322 1 if(aa3<=61) {turn=((aa-30)*429+3672)/200-3;} //20-30K
323 1 if(aa3<=51) {turn=(aa-30)*11*51/200+2;} //10-20K
324 1 if(aa3<=40) {turn=(aa-30)*13*51/200-1;} //10K
325 1 if(aa3<=31) {turn=2;}
326 1
327 1 if(turn>=255) turn=254;
328 1 if(turn<=1) turn=0;
329 1
330 1 if(num1<10) num1++;
331 1 else{num1=0;flash=!flash;}
332 1
333 1
334 1 }
335
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1963 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 50 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -