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

📄 89s52.lst

📁 基于AT89C52的频率计,希望大家有用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -