📄 c51.lst
字号:
248
249 void timer0() interrupt 1
250 {
251 1 // EA=0;
252 1 TH0=0x3c; //Timer0置50ms定时初值dc00H(2^16=65536D,dc00H=56320D)
253 1 TL0=0xb0; //定时时间=(65536-50000)*(1/12)*12=50ms (f0=11.0592Mhz)
254 1 sec100++;
255 1 if(sec100 >= 5) //1秒时间 (100*10ms=1000ms=1s)
256 1 {sec100 = 0;
257 2
258 2 if(sec<59) sec++;
259 2 else
260 2 {sec=0;if(hour<23) hour++;
261 3 else hour=0;
262 3 }
263 2 }
264 1 disptime(2);
265 1 // EA=1;
266 1 }
267
268
269
270
271 void PanduanFlage1(uchar f)
272 {
273 1 if(ID0==f) Fx_flage=0;
274 1 else Fx_flage=1;
275 1 }
276
277
278 void Funcmnue()
279 {
280 1 PanduanFlage1(0);
281 1 disp_str("开始",5,0);
282 1 PanduanFlage1(1);
283 1 disp_str("停止",45,0);
284 1 PanduanFlage1(2);
285 1 disp_str("间隔",85,0);
286 1 PanduanFlage1(3);
287 1 disp_str("喷洒数",85,2);
288 1 PanduanFlage1(4);
289 1 disp_str("开",5,2);
290 1 PanduanFlage1(5);
291 1 disp_str("停",5,4);
292 1 Fx_flage=1;
293 1 disp_str(":",56,4);
294 1 PanduanFlage1(6);
295 1 disp_str("退出",102,6);
296 1
297 1 }
298
299
300 void Functionselection(uchar keyv,full)
301 {
302 1 keyvalue=keyv;
303 1 while(key4==1)
C51 COMPILER V7.06 C51 07/02/2008 10:57:46 PAGE 6
304 1 {
305 2 if(key1==0)
306 2 {
307 3 while(key1==0);
308 3 if(keyvalue<full) keyvalue++;
309 3 else keyvalue=0;
310 3 }
311 2 if(key2==0)
312 2 {
313 3 while(key2==0);
314 3 if(keyvalue>0) keyvalue--;
315 3 else keyvalue=full;
316 3 }
317 2 if(full==2)
318 2 { IDF=keyvalue;disptime(IDF);}
319 2 if(full==6)
320 2 { ID0=keyvalue;Funcmnue();disptime(2);}
321 2 else
322 2 {
323 3 if(full==59)
324 3 sec=keyvalue;
325 3 if(full==23)
326 3 hour=keyvalue;
327 3 disptime(IDF);
328 3 }
329 2
330 2 }
331 1 while(key4==0);
332 1 }
333
334
335
336 void time0int()
337 {
338 1 EA=0;
339 1 TMOD= 0x01;
340 1 TL0 = 0X3c;
341 1 TH0 = 0Xb0;
342 1 EX0=0;
343 1 EX1=0;
344 1 ET0 = 1;
345 1 TR0 = 1;
346 1 EA = 1;
347 1
348 1 }
349
350
351
352 void timesec()
353 {
354 1 while(IDF!=2)
355 1 {
356 2 Functionselection(IDF,2);
357 2 if(IDF==1) Functionselection(hour,23);
358 2 if(IDF==0) Functionselection(sec,59);
359 2 }
360 1 IDF=0;
361 1
362 1 }
363
364
365
C51 COMPILER V7.06 C51 07/02/2008 10:57:46 PAGE 7
366
367
368 void Mnue3()
369 {
370 1 EA=0;
371 1 Clear();
372 1 Funcmnue();
373 1 while (key3==1)
374 1 {
375 2 Functionselection(ID0,6);
376 2 switch(ID0)
377 2 {
378 3 case 0 :hour=starttime[0]; sec=starttime[1];disptime(2);timesec();starttime[0]=hour;starttime[1]=sec;br
-eak;
379 3 case 1 :hour=starttime[2]; sec=starttime[3];disptime(2);timesec();starttime[2]=hour;starttime[3]=sec;br
-eak;
380 3 case 2 :hour=starttime[4]; sec=starttime[5];disptime(2);timesec();starttime[4]=hour;starttime[5]=sec;br
-eak;
381 3 case 3 :disptime(0);goto Timeover; break;
382 3 case 4 :time0int();
383 3 while(key3==1)
384 3 {disptime(2);Functionselection(ID0,6);}
385 3 goto Timeover;break;
386 3
387 3 case 5 :goto Timeover; break;
388 3 case 6 : goto Timeover; break;
389 3
390 3 }
391 2
392 2 }
393 1 while(key3==0);
394 1 Timeover:
395 1 Clear();
396 1 Mnue();
397 1 EA=1;
398 1 }
399
400 void Scankey1() interrupt 0
401 {
402 1 if(key1==0)
403 1 {
404 2 while (key1==0);
405 2 if(ID<4)
406 2 ID+=1;
407 2 else ID=0;
408 2 Mnue();
409 2 }
410 1
411 1 }
412
413
414 void Scankey2() interrupt 2
415 {
416 1 if(key2==0)
417 1 {
418 2 while (key1==0);
419 2 if(ID>0)
420 2 ID-=1;
421 2 else ID=3;
422 2 Mnue();
423 2 }
424 1
C51 COMPILER V7.06 C51 07/02/2008 10:57:46 PAGE 8
425 1 }
426
427 void show_ad(void)
428 {
429 1 disp_ch(b1,0,0);
430 1 disp_ch(b2,8,0);
431 1 disp_ch(b3,16,0);
432 1 }
433
434 void ADchange()
435 {
436 1 b3 = readadc();
437 1 b1 = b3/100+48;
438 1 b2 = (b3%100)/10+48;
439 1 b3 = (b3%100)%10+48;
440 1 show_ad();
441 1 }
442
443
444
445 void main()
446 {
447 1 LcdInit();
448 1
449 1 // TMOD=0X01;
450 1 EA=1;
451 1 EX0=1;
452 1 EX1=1;
453 1 Mnue();
454 1 while(1)
455 1 {
456 2 if(key4==0)
457 2 {
458 3 switch(ID)
459 3 {
460 4 case 0:Mnue0();break;
461 4 case 1:Mnue1();break;
462 4 case 2:Mnue2();break;
463 4 case 3:Mnue3();break;
464 4
465 4 }
466 3 }
467 2 }
468 1
469 1 }
470
471
472
473 void Delayms(uint ms)
474 {
475 1 uchar j;
476 1 while(ms--)
477 1 for(j=0;j<=20;j++);
478 1
479 1 }
480
481
482
483
484
C51 COMPILER V7.06 C51 07/02/2008 10:57:46 PAGE 9
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2858 ----
CONSTANT SIZE = 2210 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 39 37
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 + -