📄 89s52.lst
字号:
290 1 T2CON=8;
291 1 Tctrl=0;
292 1
293 1 }
294
295 void width_get()
296 {
297 1 while(1);
298 1 }
299
300 void count()
301 {
302 1 while(1)
303 1 {
C51 COMPILER V8.02 89S52 04/27/2006 22:33:57 PAGE 6
304 2 key_jud();
305 2 P2=0xff;
306 2 Enex=0;
307 2 value=TH0;
308 2 value=(value<<8);
309 2 value=value+TL0;
310 2 value=(value<<8);
311 2 value=value+DBPORT;
312 2 Enex=1;
313 2 lcd_moveto(1,9);
314 2 sprintf(sbuffer,"%-5lu",value);
315 2 lcd_moveto(1,9);
316 2 lcd_print(sbuffer);
317 2 copyer=w[4]+w[3]*10+w[2]*1e2+w[1]*1e3+w[0]*1e4;
318 2 if(value==copyer)
319 2 {
320 3 StopCount;
321 3 P3_1=0;
322 3 while(P0_1==1||P0_2==1);
323 3 P3_1=1;
324 3 StarCount;
325 3 }
326 2 sprintf(sbuffer,"%c%c%c%c%c",w[0]+'0',w[1]+'0',w[2]+'0',w[3]+'0',w[4]+'0');
327 2 lcd_moveto(0,9);
328 2 lcd_print(sbuffer);
329 2 }
330 1 }
331
332 void count_init()
333 {
334 1 unsigned char i;
335 1 Disall;
336 1 Fctrl=0;
337 1 TMOD=0x05;
338 1 TR0=1;
339 1 StopCount;
340 1 ClrsCount;
341 1 TL0=0;
342 1 TH0=0;
343 1 for(i=0;i<5;i++) w[i]=9;
344 1 w[2]=8;
345 1 StarCount;
346 1 }
347
348 void low_get()
349 {
350 1 low_init();
351 1 while(IsLow);
352 1 high_init();
353 1 }
354
355 void show_high_t()
356 {
357 1 copyer=value;
358 1 while(value>=100000) value/=10;
359 1 wvalue=1e9/value;
360 1 depart_w();
361 1 if(copyer<=1e4)
362 1 sprintf(sbuffer,"%c%c%c.%c uS ",w[0],w[1],w[2],w[3]);
363 1 else if(copyer<=1e5)
364 1 sprintf(sbuffer,"%c%c.%c%c uS ",w[0],w[1],w[2],w[3]);
365 1 else if(copyer<=1e6)
C51 COMPILER V8.02 89S52 04/27/2006 22:33:57 PAGE 7
366 1 sprintf(sbuffer,"%c.%c%c%c uS ",w[0],w[1],w[2],w[3]);
367 1 else if(copyer<=1e7)
368 1 sprintf(sbuffer,"%c%c%c.%c nS ",w[0],w[1],w[2],w[3]);
369 1 else
370 1 sprintf(sbuffer,"%c%c.%c%c nS ",w[0],w[1],w[2],w[3]);
371 1 lcd_moveto(1,5);
372 1 lcd_print(sbuffer);
373 1
374 1 }
375
376 void show_high_f()
377 {
378 1 wvalue=value;
379 1 depart_w();
380 1 if(value<1e4)
381 1 sprintf(sbuffer,"%c.%c%c%c KHz ",w[0],w[1],w[2],w[3]);
382 1 else if(value<1e5)
383 1 sprintf(sbuffer,"%c%c.%c%c KHz ",w[0],w[1],w[2],w[3]);
384 1 else if(value<1e6)
385 1 sprintf(sbuffer,"%c%c%c.%c KHz ",w[0],w[1],w[2],w[3]);
386 1 else if(value<1e7)
387 1 sprintf(sbuffer,"%c.%c%c%c MHz ",w[0],w[1],w[2],w[3]);
388 1 else
389 1 sprintf(sbuffer,"%c%c.%c%c MHz ",w[0],w[1],w[2],w[3]);
390 1 lcd_moveto(1,5);
391 1 lcd_print(sbuffer);
392 1 }
393
394 void show_low_t()
395 {
396 1 wvalue=value;
397 1 depart_w();
398 1 if(value<1e4)
399 1 sprintf(sbuffer,"%c%c%c.%c uS ",w[0],w[1],w[2],w[3]);
400 1 else if(value<1e5)
401 1 sprintf(sbuffer,"%c.%c%c%c mS ",w[0],w[1],w[2],w[3]);
402 1 else if(value<1e6)
403 1 sprintf(sbuffer,"%c%c.%c%c mS ",w[0],w[1],w[2],w[3]);
404 1 else if(value<1e7)
405 1 sprintf(sbuffer,"%c%c%c.%c mS ",w[0],w[1],w[2],w[3]);
406 1 else if(value<1e8)
407 1 sprintf(sbuffer,"%c.%c%c%c S ",w[0],w[1],w[2],w[3]);
408 1 lcd_moveto(1,5);
409 1 lcd_print(sbuffer);
410 1 }
411
412 void show_low_f()
413 {
414 1 copyer=value;
415 1 while(value>=100000) value/=10;
416 1 wvalue=1e9/value;
417 1 depart_w();
418 1 if(copyer<=1e4)
419 1 sprintf(sbuffer,"%c.%c%c%c KHz ",w[0],w[1],w[2],w[3]);
420 1 else if(copyer<=1e5)
421 1 sprintf(sbuffer,"%c%c%c.%c Hz ",w[0],w[1],w[2],w[3]);
422 1 else if(copyer<=1e6)
423 1 sprintf(sbuffer,"%c%c.%c%c Hz ",w[0],w[1],w[2],w[3]);
424 1 else
425 1 sprintf(sbuffer,"%c.%c%c%c Hz ",w[0],w[1],w[2],w[3]);
426 1 lcd_moveto(1,5);
427 1 lcd_print(sbuffer);
C51 COMPILER V8.02 89S52 04/27/2006 22:33:57 PAGE 8
428 1 }
429
430 void intr0() interrupt 0
431 {
432 1
433 1 Cut=1;
434 1 P2=0xff;
435 1 Enex=0;
436 1 value=TH0*0x10000+TL0*0x100+DBPORT;
437 1 value*=10;//注意在写片时屏掉此语句
438 1 Enex=1;
439 1 if(!IsFreq) show_low_t();
440 1 else show_low_f();
441 1 if(value<4000) IsLow=0;
442 1 Cut=0;
443 1
444 1 }
445
446 void intr1() interrupt 2
447 {
448 1 TL0=0;
449 1 TH0=0;
450 1 }
451
452 void high_get()
453 {
454 1 while(1)
455 1 {
456 2 StarCount;
457 2 delay1s();
458 2 StopCount;
459 2 P2=0xff;
460 2 Enex=0;
461 2 value=TH0*0x10000+TL0*0x100+DBPORT;
462 2 Enex=1;
463 2 if(value<2000) low_get();
464 2 if(IsFreq) show_high_f();
465 2 else show_high_t();
466 2 ClrsCount;
467 2 TL0=0;
468 2 TH0=0;
469 2 }
470 1 }
471
472 void contrast_handle()
473 {
474 1 lcd_moveto(1,0);
475 1 lcd_print("Contrast : ");
476 1 lcd_putchar(contrast+'0');
477 1 }
478
479
480 void install()
481 {
482 1 key_delay();
483 1 while(1)
484 1 {
485 2 switch(P0&0x7)
486 2 {
487 3 case K2:P1_5=~P1_5;
488 3 _nop_();
489 3 P1_5=~P1_5;
C51 COMPILER V8.02 89S52 04/27/2006 22:33:57 PAGE 9
490 3 key_delay();
491 3 lcd_moveto(0,12);
492 3 if(BackLight) lcd_print("N ");
493 3 else lcd_print("FF");
494 3 break;
495 3 case K7:contrast--;
496 3 if(contrast==0xff) contrast++;
497 3 contrast_handle();
498 3 key_delay();
499 3 break;
500 3 case K6:contrast++;
501 3 if(contrast==8) contrast--;
502 3 contrast_handle();
503 3 key_delay();
504 3 break;
505 3
506 3 }
507 2 }
508 1 }
509
510 void lcd_init()
511 {
512 1 lcd_command(DIS_CURS_OFF);
513 1 lcd_command(LCD_INIT);
514 1 lcd_command(LCD_HOME);
515 1 contrast_handle();
516 1 }
517
518 void main()
519 {
520 1 lcd_init();
521 1 lcd_command(LCD_CLRS);
522 1 lcd_print("Welcome");
523 1 lcd_moveto(1,0);
524 1 lcd_print("Press Button...");
525 1 while(1)
526 1 {
527 2 switch(P0&0x7)
528 2 {
529 3 case K1:lcd_command(LCD_CLRS);
530 3 lcd_moveto(0,0);
531 3 lcd_print("Frequency:");
532 3 lcd_moveto(1,5);
533 3 lcd_print("No Input");
534 3 high_init();
535 3 high_get();
536 3 case K2:IsFreq=0;
537 3 lcd_command(LCD_CLRS);
538 3 lcd_moveto(0,0);
539 3 lcd_print("Priod:");
540 3 lcd_moveto(1,5);
541 3 lcd_print("No Input");
542 3 high_get();
543 3 case K3:lcd_command(LCD_CLRS);
544 3 lcd_print("Count To:");
545 3 lcd_moveto(1,0);
546 3 lcd_print("Present: ");
547 3 count_init();
548 3 count();
549 3 case K4:lcd_command(LCD_CLRS);
550 3 lcd_print("Pulse Width:");
551 3 lcd_moveto(1,5);
C51 COMPILER V8.02 89S52 04/27/2006 22:33:57 PAGE 10
552 3 lcd_print("Capture.....");
553 3 width_init();
554 3 width_get();
555 3 case K5:lcd_command(LCD_CLRS);
556 3 lcd_print("Backlight: O");
557 3 lcd_moveto(0,12);
558 3 if(BackLight) lcd_print("N ");
559 3 else lcd_print("FF");
560 3 lcd_moveto(1,0);
561 3 lcd_print("Contrast : ");
562 3 lcd_putchar(contrast+'0');
563 3 install();
564 3 }
565 2 }
566 1 lcd_command(LCD_CLRS);
567 1 while(1);
568 1 }
569
570
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2947 ----
CONSTANT SIZE = 447 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 33 2
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -