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

📄 display.lst

📁 89C54构成MC4511锁相环稳定性扫描测试仪器
💻 LST
📖 第 1 页 / 共 2 页
字号:
 338   3               if(++out>41)  out=0;
 339   3              }        
 340   2        }
 341   1        scanh++;
 342   1        if(scanh>1)
 343   1         {
 344   2          scanh=0;
 345   2          if(!auto_scanh)
 346   2          {
 347   3               dataout=(out&0x3f)|(dataout&0xc0);
 348   3           freholder.tho=bcdmap[out][0];
 349   3           freholder.hun=bcdmap[out][1];
 350   3           freholder.dec=bcdmap[out][2];
 351   3           freholder.num=bcdmap[out][3];
 352   3               led_buf_auto_flush();
 353   3               if(++out>41)  out=0;
 354   3              }        
 355   2        }
 356   1      }
 357          
 358          /*********************************************************************
 359          函数原型:void timer1(void)
 360          功    能:中断服务程序
 361          *********************************************************************/
 362          void timer1(void) interrupt 3 using 3
 363          {
 364   1        TH1=reload_high1;
 365   1        TL1=reload_low1;
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 7   

 366   1        D4=!D4;
 367   1        D5=!D5;
 368   1      }
 369          
 370          /*********************************************************************
 371          函数原型:void swtich_power(void)
 372          功    能: 开关RF12伏电源 
 373          *********************************************************************/
 374          void switch_power(void)
 375          {
 376   1        if(RF)
 377   1        {
 378   2         RFOUT=dataout&0x3f;
 379   2         if(message_disp)
 380   2          {
 381   3               dispdata=0x0f;
 382   3           message_disp=!message_disp;
 383   3          }; 
 384   2         dataout=(RFOUT&0x00)|(dataout&0xc0);
 385   2        }
 386   1        else 
 387   1        {
 388   2         dataout=(dataout&0xc0)|RFOUT;
 389   2         if(!message_disp)
 390   2          message_disp=!message_disp;
 391   2        };
 392   1        RF=!RF;
 393   1        EA=!EA;
 394   1      }
 395          
 396          //主菡数
 397          main()
 398          {
 399   1        init_sys();
 400   1        TMOD=0x11;
 401   1        TCON=0x10;
 402   1        TH0=reload_high;
 403   1        TL0=reload_low;
 404   1        TH1=reload_high1;
 405   1        TL1=reload_low1;
 406   1        IE=0x82;
 407   1        TR1=0;
 408   1        ET1=1;
 409   1        pulse_control=0; 
 410   1        auto_scanl=1;
 411   1        auto_scanh=1;
 412   1        message_disp=1;
 413   1        dataout=dataout&0xc0;
 414   1        freholder.tho=bcdmap[0][0];
 415   1        freholder.hun=bcdmap[0][1];
 416   1        freholder.dec=bcdmap[0][2];
 417   1        freholder.num=bcdmap[0][3];
 418   1        monitor();
 419   1      }
 420          
 421          /***************************************************************************
 422          菡数原型:void error_message(void)
 423          功    能:显示错误信息"0000"
 424          ****************************************************************************/
 425          void error_message(void)
 426          {
 427   1        auto_flush=0;
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 8   

 428   1        set_led_buf('8',0,1);
 429   1        set_led_buf('8',1,1);
 430   1        set_led_buf('8',2,1);
 431   1        set_led_buf('8',3,1);
 432   1        message_time=5;
 433   1        message_flag=1;
 434   1      }
 435          
 436          /***************************************************************************
 437          函数原型:void set_led_buf(uchar c,uchar pos,uchr cnt)
 438          功    能:从显示缓冲区的pos位置开始,用字符c填充cnt个字节
 439          ****************************************************************************/
 440          void set_led_buf(uchar c,uchar pos,uchar cnt)
 441          {
 442   1       uchar ledbuf_pos;
 443   1       auto_flush=0;
 444   1       for(ledbuf_pos=pos;cnt>0;cnt--)
 445   1         {
 446   2          led_buf[ledbuf_pos]=((islower(c))?(toupper(c)):(c));
 447   2          ledbuf_pos++;
 448   2              if(ledbuf_pos>=4) ledbuf_pos=0;
 449   2         }
 450   1      }
 451          
 452          /****************************************************************************
 453          函数原型:void led_buf_auto_flush(void)
 454          功    能:自动刷新显示缓冲区
 455          *****************************************************************************/
 456          void led_buf_auto_flush(void) reentrant
 457          {
 458   1        if(isdigit(freholder.tho))
 459   1        led_buf[0]=freholder.tho;
 460   1        else led_buf[0]=0x0f;
 461   1        if(isdigit(freholder.hun))
 462   1        led_buf[1]=freholder.hun;
 463   1        else led_buf[1]=0x0f;
 464   1        if(isdigit(freholder.dec))
 465   1        led_buf[2]=freholder.dec;
 466   1        else led_buf[2]=0x0f;
 467   1        if(isdigit(freholder.num))
 468   1        led_buf[3]=freholder.num;
 469   1        else led_buf[3]=0x0f;
 470   1      }
 471          
 472          /*****************************************************************************
 473          函数:void set_auto_disp(void)
 474          设置频率
 475          *****************************************************************************/
 476          void set_fre_disp(void)
 477          {
 478   1       uchar ccommand;
 479   1       uchar data str[4];
 480   1       auto_flush=0;
 481   1       curfre.tho=freholder.tho;
 482   1       curfre.hun=freholder.hun;
 483   1       curfre.dec=freholder.dec;
 484   1       curfre.num=freholder.num;
 485   1       get_str(str,4);
 486   1       while(1)
 487   1        {
 488   2         curfre.tho=str[0];
 489   2         curfre.hun=str[1];
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 9   

 490   2         curfre.dec=str[2];
 491   2         curfre.num=str[3]; 
 492   2         ccommand=get_ch();
 493   2         if(isupper(ccommand))
 494   2              switch(ccommand)
 495   2              {
 496   3               case 'M':if(!compare_fre_disp())
 497   3                         {
 498   4                                 error_message();
 499   4                                 auto_flush=1;
 500   4                                 }
 501   3                                 else auto_flush=1; break;
 502   3           case 'F':break;
 503   3              }
 504   2         if(auto_flush) break;
 505   2        }
 506   1       led_buf_auto_flush();
 507   1      }
 508          
 509          /****************************************************************************
 510          函数原型:void scan_fre_bufL(void)
 511          功    能:自动刷新显示缓冲区
 512          *****************************************************************************/
 513          void scan_fre_bufL(void)
 514          {
 515   1       if(auto_scanh)
 516   1        auto_scanl=!auto_scanl;
 517   1       else 
 518   1        {
 519   2         auto_scanh=!auto_scanh;
 520   2         auto_scanl=!auto_scanl;
 521   2        }
 522   1       FLASH=0;
 523   1      }
 524          
 525          /****************************************************************************
 526          函数原型:void scan_fre_bufL(void)
 527          功    能:自动刷新显示缓冲区
 528          *****************************************************************************/
 529          void scan_fre_bufH(void)
 530          {
 531   1       if(auto_scanl)
 532   1       auto_scanh=!auto_scanh;
 533   1       else
 534   1        {
 535   2         auto_scanl=!auto_scanl;
 536   2         auto_scanh=!auto_scanh;
 537   2        }
 538   1       FLASH=0;
 539   1      }
 540          
 541          /****************************************************************************
 542          函数原型:void fre_outl(void)
 543          功    能:
 544          *****************************************************************************/
 545          void fre_outl(void)
 546          {
 547   1       uchar out=0x00;
 548   1       dataout=(dataout&0xc0)|(out&0x3f);      //LEDS  999
 549   1       freholder.tho=0x0f;
 550   1       freholder.hun=bcdmap[0][1];
 551   1       freholder.dec=bcdmap[0][2];
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 10  

 552   1       freholder.num=bcdmap[0][3];
 553   1       led_buf_auto_flush();
 554   1       F=!F;
 555   1      }
 556          
 557          /****************************************************************************
 558          函数原型:void frr_outm(void)
 559          功    能:
 560          *****************************************************************************/
 561          void fre_outm(void)
 562          {
 563   1       uchar out=0x13;
 564   1       dataout=(dataout&0xc0)|(out&0x3f);      //LEDS  1060
 565   1       freholder.tho=bcdmap[19][0];
 566   1       freholder.hun=bcdmap[19][1];
 567   1       freholder.dec=bcdmap[19][2];
 568   1       freholder.num=bcdmap[19][3];
 569   1       led_buf_auto_flush();
 570   1       F=!F;
 571   1      }
 572          
 573          /****************************************************************************
 574          函数原型:fre_outh(void)
 575          功    能:
 576          *****************************************************************************/
 577          void fre_outh(void)
 578          {
 579   1       uchar out=0x26;
 580   1       dataout=(dataout&0xc0)|(out&0x3f);      //LEDS   1121
 581   1       freholder.tho=bcdmap[38][0];
 582   1       freholder.hun=bcdmap[38][1];
 583   1       freholder.dec=bcdmap[38][2];
 584   1       freholder.num=bcdmap[38][3];
 585   1       led_buf_auto_flush();
 586   1       F=!F;
 587   1      }
 588          
 589          /****************************************************************************
 590          函数原型:void pulse_switch(void)
 591          功    能:
 592          *****************************************************************************/
 593          void pulse_switch(void)
 594          {
 595   1       pulse_control=!pulse_control;
 596   1       D0=0;
 597   1       D1=0;
 598   1       D2=0;
 599   1       D3=0;
 600   1       D4=D5;
 601   1       TR1=!TR1;
 602   1      }
 603          
 604          /****************************************************************************
 605          函数原型:void fre_uph(void)
 606          功    能:
 607          *****************************************************************************/
 608          void fre_up(void)
 609          {
 610   1       uchar outup;
 611   1       outup=dataout&0x3f;
 612   1       if(++outup>41)   outup=0;
 613   1       dataout=outup|(dataout&0xc0);
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 11  

 614   1       freholder.tho=bcdmap[outup][0];
 615   1       freholder.hun=bcdmap[outup][1];
 616   1       freholder.dec=bcdmap[outup][2];
 617   1       freholder.num=bcdmap[outup][3];
 618   1       led_buf_auto_flush();
 619   1      }
 620          
 621          /****************************************************************************
 622          函数原型:void fre_uph(void)
 623          功    能:
 624          *****************************************************************************/
 625          void fre_down(void)
 626          {
 627   1       uchar outdown;
 628   1       outdown=dataout&0x3f;
 629   1       if(outdown--<=0)  outdown=41;
 630   1       dataout=outdown|(dataout&0xc0);
 631   1       freholder.tho=bcdmap[outdown][0];
 632   1       freholder.hun=bcdmap[outdown][1];
 633   1       freholder.dec=bcdmap[outdown][2];
 634   1       freholder.num=bcdmap[outdown][3];
 635   1       led_buf_auto_flush();
 636   1      }
 637          
 638          /****************************************************************************
 639          函数原型:bit compare_fre_disp(void)
 640          功    能:
 641          *****************************************************************************/
 642          bit compare_fre_disp(void)
 643          {
 644   1       uchar compare;
 645   1       for(compare=0;compare<41;compare++)
 646   1        {
 647   2         if((bcdmap[compare][0]==curfre.tho)&&(bcdmap[compare][1]==curfre.hun)&&\
 648   2         (bcdmap[compare][2]==curfre.dec)&&(bcdmap[compare][3]==curfre.num))
 649   2                {
 650   3                 freholder.tho=curfre.tho;
 651   3                 freholder.hun=curfre.hun;
 652   3                 freholder.dec=curfre.dec;
 653   3                 freholder.num=curfre.num;
 654   3                 //TR0=1;
 655   3                 auto_flush=1;
 656   3             led_buf_auto_flush();
 657   3             message_flag=0;
 658   3                 dataout=(dataout&0xc0)|(compare&0x3f);
 659   3                 return((bit) 1);
 660   3            }
 661   2        }
 662   1       message_flag=1;
 663   1       return((bit) 0);
 664   1      } 
 665          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1781    ----
   CONSTANT SIZE    =    168    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      28
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
C51 COMPILER V7.06   DISPLAY                                                               02/21/2006 10:19:59 PAGE 12  

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -