⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pinlvji3.lst

📁 频率计 闸门时间0.1s 1s 10s 频率范围0~99khz 可以切换 里面有四个源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -