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

📄 avc2.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 473   4                              }
 474   3                              else
 475   3                              {
 476   4                                      temp_avc=temp_u51_p;
 477   4                                      c_sample=0;
 478   4                                      CTCON=CTCON|0x20;
 479   4                              }
 480   3                      }
 481   2                      else if(pp.avc_type==SB)
 482   2                      {
 483   3                              if(pulse_base==1)
 484   3                              {
 485   4                                      gate=0;
 486   4                                      CTCON=CTCON&0xCF;
 487   4                              }
 488   3                              else
C51 COMPILER V7.06   AVC2                                                                  06/29/2005 10:04:08 PAGE 9   

 489   3                              {
 490   4                                      temp_avc=temp_u51_b;
 491   4                                      c_sample=0;
 492   4                                      CTCON=CTCON|0x20;
 493   4                              }
 494   3                      }
 495   2                      else
 496   2                      {
 497   3                              gate=0;
 498   3                              CTCON=CTCON&0xCC;
 499   3                              AD1=0;
 500   3                              AD2=0;
 501   3                              AD3=0;
 502   3                              AD4=0;
 503   3                              AD5=0;
 504   3                              new_circle=1;
 505   3                              if(pulse_base==1)
 506   3                                      temp_avc=temp_u51_p;
 507   3                              else
 508   3                                      temp_avc=temp_u51_b;
 509   3                              CTCON=CTCON|0x20;
 510   3                      }
 511   2              }
 512   1      
 513   1      
 514   1              if(pulse_base==1)
 515   1                      CTCON=CTCON|0X80;       //CT3下降沿
 516   1              else
 517   1                      CTCON=CTCON|0X40;       //CT3上升沿
 518   1      }
 519          
 520          void ADC_int (void) interrupt 10
 521          {
 522   1              ADCON=ADCON&0xEF;                       //清ADC中断标志
 523   1              c_sample++;                                                     //2005-3-3
 524   1              adh=ADCH;
 525   1              adl=ADCON&0xC0;
 526   1              adh=adh<<2;
 527   1              adl=adl>>6;
 528   1              ad=adh+adl;
 529   1              da=ad;
 530   1              AD5=(da*5000)/0x3FF;
 531   1              if(new_circle==1)
 532   1              {
 533   2                      new_circle=0;
 534   2                      AD1=AD5;
 535   2                      AD2=AD5;
 536   2                      AD3=AD5;
 537   2                      AD4=AD5;
 538   2              }
 539   1              else
 540   1              {
 541   2                      AD5=(AD5+AD1+AD2+AD3+AD4)/5;
 542   2                      AD1=AD2;
 543   2                      AD2=AD3;
 544   2                      AD3=AD4;
 545   2                      AD4=AD5;
 546   2              }
 547   1              AD5=AD5*6/100;                          //AD5*30/5
 548   1      
 549   1              if(c_sample%5==0)
 550   1              {
C51 COMPILER V7.06   AVC2                                                                  06/29/2005 10:04:08 PAGE 10  

 551   2                      if(AD5>=temp_avc)
 552   2                      {
 553   3                              SENS=AD5-temp_avc;
 554   3                              avc_dir=0;
 555   3                      }
 556   2                      else
 557   2                      {
 558   3                              SENS=temp_avc-AD5;
 559   3                              avc_dir=1;
 560   3                      }
 561   2                      if(SENS>=1)
 562   2                      {
 563   3                              switch(SENS)
 564   3                              {
 565   4                                      case 1: {
 566   5                                                      COM=0X36;
 567   5                                                      COUNT0=8000%256;                //500HZ
 568   5                                                      COUNT0=8000/256;
 569   5                                                      COM=0X76;
 570   5                                                      COUNT1=4;                       //2p,0.0075mm
 571   5                                                      COUNT1=0;
 572   5                                              }break;
 573   4                                      case 2:
 574   4                                      case 3: {
 575   5                                                      COM=0X36;
 576   5                                                      COUNT0=8000%256;                //500HZ
 577   5                                                      COUNT0=8000/256;
 578   5                                                      COM=0X76;
 579   5                                                      COUNT1=10;                      //5p,0.01875mm 0.1v
 580   5                                                      COUNT1=0;
 581   5      
 582   5                                              }break;
 583   4                                      case 4:
 584   4                                      case 5: {
 585   5                                                      COM=0X36;
 586   5                                                      COUNT0=8000%256;                //500HZ
 587   5                                                      COUNT0=8000/256;
 588   5                                                      COM=0X76;
 589   5                                                      COUNT1=20;
 590   5                                                      COUNT1=0;
 591   5                                                      out1=0;                 //10p,0.0375mm 0.2v
 592   5                                              }break;
 593   4                                      case 6:
 594   4                                      case 7: {
 595   5                                                      COM=0X36;
 596   5                                                      COUNT0=6757%256;
 597   5                                                      COUNT0=6757/256;
 598   5                                                      COM=0X76;
 599   5                                                      COUNT1=32;
 600   5                                                      COUNT1=0;
 601   5                                              }break;
 602   4                                      case 8:
 603   4                                      case 9: {
 604   5                                                      COM=0X36;
 605   5                                                      COUNT0=5141%256;        //778hz
 606   5                                                      COUNT0=5141/256;
 607   5                                                      COM=0X76;
 608   5                                                      COUNT1=42;              //0.08mm 0.4v
 609   5                                                      COUNT1=0;
 610   5                                              }break;
 611   4                                      case 10:{
 612   5                                                      COM=0X36;
C51 COMPILER V7.06   AVC2                                                                  06/29/2005 10:04:08 PAGE 11  

 613   5                                                      COUNT0=4000%256;        //1000hz
 614   5                                                      COUNT0=4000/256;
 615   5                                                      COM=0X76;
 616   5                                                      COUNT1=54;              //0.1mm 0.5v
 617   5                                                      COUNT1=0;
 618   5                                              }break;
 619   4                                      default:{
 620   5                                                      COM=0X36;
 621   5                                                      COUNT0=3376%256;        //1185hz
 622   5                                                      COUNT0=3376/256;
 623   5                                                      COM=0X76;
 624   5                                                      COUNT1=64;              //0.12mm 0.6v
 625   5                                                      COUNT1=0;
 626   5                                              }break;
 627   4                              }
 628   3      
 629   3                              CTCON=CTCON|0x02;
 630   3                              IEN1=IEN1|0X01;                 //允许CT0,弧长调整长度
 631   3                              avc_enable=0;
 632   3                              gate=1;
 633   3                      }
 634   2                      c_sample=0;
 635   2                      if(pp.k1==DC||(pp.k1==PDC&&(pp.avc_type==SP&&pulse_base==1||pp.avc_type==SP&&pulse_base==1||pp.avc_type=
             -=SPB||pp.avc_type==SB&&pulse_base==0)))
 636   2                      {
 637   3                              CTCON=CTCON|0x20;
 638   3      //                      IEN1=IEN1|0X04;         //允许CT2
 639   3                      }
 640   2              }
 641   1              else
 642   1              {
 643   2                      if(pp.k1==DC||(pp.k1==PDC&&(pp.avc_type==SP&&pulse_base==1||pp.avc_type==SP&&pulse_base==1||pp.avc_type=
             -=SPB||pp.avc_type==SB&&pulse_base==0)))
 644   2                      {
 645   3                              CTCON=CTCON|0x20;
 646   3      //                      IEN1=IEN1|0X04;         //允许CT2
 647   3                      }
 648   2              }
 649   1              ad_finish=1;                            //AD转换及处理完成
 650   1      }
 651          
 652          main()
 653          {
 654   1              TMOD=0x22;                              //定时器1,方式2;定时器0,方式3,两个8位定时器;
 655   1              TL1=0XFD;                               //波特率9600
 656   1              TH1=0XFD;
 657   1              TR1=1;                                  //启动定时器
 658   1              TMOD=0x23;                              //定时器0,方式3,两个8位定时器;
 659   1              TR1=0;
 660   1              TF1=0;
 661   1              S0CON=0XF8;                             //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
 662   1              IP1=0X01;                               //CT0高优先级
 663   1              IP0=0X98;                               //S0=1,T1=1
 664   1              ES0=1;                                  //开串口中断
 665   1              ET1=1;
 666   1              EAD=1;                                  //AD中断允许
 667   1              EA=1;                                   //中断总允许
 668   1              start_t2();
 669   1      
 670   1              externel_voltage=0;
 671   1              COM=0XB6;
 672   1              COUNT2=0x00;
C51 COMPILER V7.06   AVC2                                                                  06/29/2005 10:04:08 PAGE 12  

 673   1              COUNT2=0x00;
 674   1              AD1=0;
 675   1              AD2=0;
 676   1              AD3=0;
 677   1              AD4=0;
 678   1              AD5=0;
 679   1              U51=0;
 680   1              urgent_stop=0;
 681   1              avc_err=0;
 682   1              err_ok=0;
 683   1              err=0;
 684   1      
 685   1      BEGIN:  if(urgent_stop==1)
 686   1              {
 687   2                      urgent_stop=0;
 688   2                      err_ok=0;
 689   2                      EX1=1;
 690   2                      EX0=1;
 691   2              }
 692   1              CTCON=0X00;
 693   1              IEN1=0x00;
 694   1              COM=0x36;
 695   1              COUNT0=0x00;
 696   1              COUNT0=0x00;
 697   1              COM=0X76;
 698   1              COUNT1=0x00;
 699   1              COUNT1=0x00;
 700   1              gate=0;                 //关门控
 701   1              avc_enable=1;
 702   1              avc_dir=1;
 703   1              work=0;
 704   1              called=0;
 705   1              start=0;
 706   1              pgj=0;
 707   1              in_sector=0;
 708   1              new_sector=0;
 709   1              start_avc=0;
 710   1              avc_ok=0;

⌨️ 快捷键说明

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