📄 pinlvji3.lst
字号:
305 2 }
306 1 P1_1=0;//us指示灯亮
307 1 }
308 //////////////////////////////////////////////////////////////////////////////////////
309 void test_cf(void)/*大于16KHZ频率,分频,T0记数,T1定时*/
310 {
311 1 F=0;
312 1 TMOD=0x15;
313 1 TL0=0x00;
314 1 TH0=0x00;
315 1 TL1=0xbc;
316 1 TH1=0xbd;
317 1
318 1 ET0=1;
319 1 ET1=1;
320 1 EA=1;
321 1
322 1 TR1=1;
323 1 TR0=1;
324 1 couter0=0;
325 1
326 1 bus0=0;
327 1
328 1 for(;couter0<16;);
329 1 TR0=0;
330 1 TR1=0;
331 1 F=bus0*65536;
332 1 F+=TL0|(TH0<<8);
333 1 F=F*16;
334 1 F_F=F;
335 1
336 1 if(F<100000)
337 1 {
338 2 F/=10;point=2;
339 2 }
340 1 else if(F<1000000)
341 1 {
342 2 F/=100;point=3;
343 2 }
344 1 else if(F<10000000)
345 1 {
346 2 F/=1000;point=4;
347 2 }
348 1 else
349 1 {
350 2 point=0;
351 2 }
352 1 P1_3=0;//KHZ指示灯亮
353 1 }
354 void test_ct(void)//大于16KHZ频率
355 {
356 1 T=0;
357 1 test_cf();
358 1 P1=P1|0xff;//情上次单位指示
359 1 T=1000000/F_F;
360 1 if(T<10)
361 1 {
362 2 T*=1000;point=1;
363 2 }
364 1 else if(T<100)
C51 COMPILER V7.50 PINLVJI3 11/17/2008 18:59:29 PAGE 7
365 1 {
366 2 T*=100;point=2;
367 2 }
368 1 else if(T<1000)
369 1 {
370 2 T*=10;point=3;
371 2 }
372 1 else
373 1 {
374 2 point=0;
375 2 }
376 1 P1_1=0;//us指示灯亮
377 1 }
378 /////////////////////////////////////////////////////////////////////////////////////////////
379 void Display()//显示驱动程序
380 {
381 1 buffer=BitTab[j];
382 1 P0=P0|0xf0;
383 1 P0=P0&buffer;
384 1 buffer=DispBuf[j];
385 1 buffer=DispTab[buffer];
386 1 P2=buffer;
387 1
388 1 switch(point)
389 1 {
390 2 case 1:if(j==0) P2_5=0;//第一位小数点亮
391 2 break;
392 2 case 2:if(j==1) P2_5=0;//第二位小数点亮
393 2 break;
394 2 case 3:if(j==2) P2_5=0;//第三位小数点亮
395 2 break;
396 2 default:break;
397 2 }
398 1
399 1 j++;
400 1 if(j==4) j=0;
401 1 }
402 ////////////////////////////////////////////////////////////////
403 void Delay_5m()
404 {
405 1 for(delay=0;delay<800;delay++);
406 1 }
407 /////////////////////////////////////////////////////////////////
408 void Measure()
409 {
410 1 TH0=0;
411 1 TL0=0;
412 1 TH1=0;
413 1 TL1=0;
414 1 F=0;
415 1 T=0;
416 1 W=0;
417 1 Z=0;
418 1
419 1 switch(key)
420 1 {
421 2 case 0xef:P0=P0|0x0f;
422 2 P0_1=0;//F指示灯亮
423 2 Ft();//flag_ft=Ft();///////////////////////////////////?????????????????
424 2 switch(flag_ft)
425 2 {
426 3 case 1:test_af();//测量小于1KHZ频率
C51 COMPILER V7.50 PINLVJI3 11/17/2008 18:59:29 PAGE 8
427 3 break;
428 3 case 2:test_bf();//测量1~16KHZ频率
429 3 break;
430 3 case 3:test_cf();//测量大于16KHZ频率
431 3 break;
432 3 default://DispBuf[3]=10;
433 3 //DispBuf[2]=10;
434 3 //DispBuf[1]=10;
435 3 //DispBuf[0]=10;//超量程处理
436 3 break;
437 3 }
438 2 break;
439 2 case 0xdf:P0=P0|0x0f;
440 2 P0_2=0;//T指示灯亮
441 2 Ft();//flag_ft=Ft();
442 2 switch(flag_ft)
443 2 {
444 3 case 1:test_at();//测量小于1KHZ周期
445 3 break;
446 3 case 2:test_bt();//测量1~16KHZ周期
447 3 break;
448 3 case 3:test_ct();//测量大于16KHZ周期
449 3 break;
450 3 default://DispBuf[3]=10;//超量程处理
451 3 //DispBuf[2]=10;
452 3 //DispBuf[3]=10;
453 3 //DispBuf[0]=10;
454 3 break;
455 3 }
456 2 break;
457 2 case 0xbf:P0=P0|0x0f;
458 2 P0_3=0;//W指示灯亮
459 2 Ft_10();
460 2 switch(flag_ft)
461 2 {
462 3 case 4:test_w();//测量脉冲宽度
463 3 break;
464 3 default://DispBuf[3]=10;//超量程处理
465 3 //DispBuf[2]=10;
466 3 //DispBuf[1]=10;
467 3 //DispBuf[0]=10;
468 3 break;
469 3 }
470 2 break;
471 2 case 0x7f:P0=P0|0x0f;
472 2 P0_0=0;//Z知指示灯亮
473 2 Ft_10();
474 2 switch(flag_ft)
475 2 {
476 3 case 4:test_z();//测量占空比
477 3 break;
478 3 default://DispBuf[3]=10;//超量程处理
479 3 //DispBuf[2]=10;
480 3 //DispBuf[1]=10;
481 3 //DispBuf[0]=10;
482 3 break;
483 3 }
484 2 break;
485 2 default://DispBuf[3]=10;
486 2 //DispBuf[2]=10;
487 2 //DispBuf[1]=10;
488 2 //DispBuf[0]=10;//Over_flow();//超量程处理
C51 COMPILER V7.50 PINLVJI3 11/17/2008 18:59:29 PAGE 9
489 2 break;
490 2 }
491 1 }
492 ////////////////////////////////////////////////////////////////////////////////
493 void INT_0(void) interrupt 0
494 {
495 1 P1=0xff;
496 1 key=P1;
497 1 Measure();
498 1 }
499 /////////////////////////////////////////////////////////////////////////////////
500 void CT1(void) interrupt 3
501 {
502 1 bus1+=1;
503 1
504 1 couter0++;
505 1 }
506 /////////////////////////////////////////////////////////////////////////////////
507 void INT_1(void) interrupt 2
508 {
509 1 TR0=~TR0;
510 1 INT1_ready=INT1_ready+1;
511 1 }
512 /////////////////////////////////////////////////////////////////////////////////
513 void CT0(void) interrupt 1
514 {
515 1 bus0+=1;//用于记数
516 1
517 1 couter++;//用于1S定时
518 1 }
519 /////////////////////////////////////////////////////////////////////////////////
520
521 /////////////////////////////////////////////////////////////////////////////////
522 void main(void)
523 {
524 1 P1=0xff;
525 1
526 1 P0=0xff;//开关状态标志灯灭,三极管关闭
527 1
528 1 IT0=0;
529 1 EX0=1;
530 1 EA=1;
531 1
532 1 IP=0x0e;//设定中断优先级INT0最低,两层嵌套时允许打断按键中断
533 1
534 1
535 1 //显示主循环
536 1 for(;;)
537 1 {
538 2 P1=P1|0xf0;
539 2 TH0=0;
540 2 TL0=0;
541 2 TH1=0;
542 2 TL1=0;
543 2
544 2 switch(key)
545 2 {
546 3 case 0xef:turn=(unsigned int)F;
547 3 DispBuf[3]=turn%10;
548 3 turn=turn/10;
549 3 DispBuf[2]=turn%10;
550 3 turn=turn/10;
C51 COMPILER V7.50 PINLVJI3 11/17/2008 18:59:29 PAGE 10
551 3 DispBuf[1]=turn%10;
552 3 DispBuf[0]=turn/10;
553 3 Display();
554 3 Delay_5m();
555 3 break;
556 3 case 0xdf:turn=(unsigned int)T;
557 3 DispBuf[3]=turn%10;
558 3 turn=turn/10;
559 3 DispBuf[2]=turn%10;
560 3 turn=turn/10;
561 3 DispBuf[1]=turn%10;
562 3 DispBuf[0]=turn/10;
563 3 Display();
564 3 Delay_5m();
565 3 break;
566 3 case 0xbf:turn=(unsigned int)W;
567 3 DispBuf[3]=turn%10;
568 3 turn=turn/10;
569 3 DispBuf[2]=turn%10;
570 3 turn=turn/10;
571 3 DispBuf[1]=turn%10;
572 3 DispBuf[0]=turn/10;
573 3 Display();
574 3 Delay_5m();
575 3 break;
576 3 case 0x7f:turn=Z;
577 3 DispBuf[3]=turn%10;
578 3 turn=turn/10;
579 3 DispBuf[2]=turn%10;
580 3 turn=turn/10;
581 3 DispBuf[1]=turn%10;
582 3 DispBuf[0]=turn/10;
583 3 Display();
584 3 Delay_5m();
585 3 break;
586 3 default:DispBuf[3]=10;
587 3 DispBuf[2]=10;
588 3 DispBuf[1]=10;
589 3 DispBuf[0]=10;
590 3 Display();
591 3 Delay_5m();
592 3 break;
593 3 }
594 2 cycle++;
595 2 if(cycle==500)
596 2 {
597 3 Measure();
598 3 cycle=0;
599 3 }
600 2 }
601 1 }
602
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2587 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.50 PINLVJI3 11/17/2008 18:59:29 PAGE 11
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -