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

📄 avc3.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 9   

 490          
 491          void CT0_int (void) interrupt 6
 492          {
 493   1              CTI0=0;
 494   1              CTCON=CTCON&0xFC;
 495   1              gate=0;
 496   1              if(lift==1)             //衰减过程
 497   1              {
 498   2                      avc_enable=1;                   //关弧长使能
 499   2                      IEN1=IEN1&0XFE;                 //禁止CT0
 500   2                      lift_complete=1;
 501   2                      lift=0;
 502   2              }
 503   1              else
 504   1              {
 505   2                      if(decrease==0&&pp.k5==ON)
 506   2                      {
 507   3                              if(pp.k1==DC||(pp.k1==PDC&&pp.avc_type==SP&&pulse_base==1))//(pp.avc_type==SP&&pulse_base==1||pp.avc_ty
             -pe==SPB||pp.avc_type==SB&&pulse_base==0)))
 508   3                                      CTCON=CTCON|0x20;
 509   3                      }
 510   2              }
 511   1      
 512   1      }
 513          
 514          void CT2_int (void) interrupt 8                 //电压采样保持脉冲
 515          {
 516   1              CTI2=0;
 517   1              CTCON=CTCON&0xCF;
 518   1              if(decrease==0)
 519   1              {
 520   2                      ad_finish=0;                    //AD转换及处理过程
 521   2                      ADCON=0X08;                     //启动AD采样
 522   2              }
 523   1      }
 524          
 525          void CT3_int (void) interrupt 9         //电流脉冲
 526          {
 527   1              CTI3=0;
 528   1              pulse_base=~pulse_base;
 529   1              CTCON=CTCON&0X3F;
 530   1      
 531   1              if(avc_ok==0)                   //开始弧长
 532   1              {
 533   2                      if(pp.avc_type==SB)
 534   2                              temp_avc=temp_u51_b;
 535   2                      else
 536   2                              temp_avc=temp_u51_p;
 537   2                      avc_ok=1;
 538   2                      CTCON=CTCON|0x20;       //CT2下降沿
 539   2                      IEN1=IEN1|0X04;         //允许CT2,采样保持脉冲
 540   2              }
 541   1              else
 542   1              {
 543   2                      if(pp.avc_type==SP)
 544   2                      {
 545   3                              if(pulse_base==0)                       //进入基值
 546   3                              {
 547   4                                      gate=0;
 548   4                                      CTCON=CTCON&0xCF;
 549   4                              }
 550   3                              else
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 10  

 551   3                              {
 552   4                                      temp_avc=temp_u51_p;
 553   4                                      c_sample=0;
 554   4                                      CTCON=CTCON|0x20;
 555   4                              }
 556   3                      }
 557   2                      else if(pp.avc_type==SB)
 558   2                      {
 559   3                              if(pulse_base==1)
 560   3                              {
 561   4                                      gate=0;
 562   4                                      CTCON=CTCON&0xCF;
 563   4                              }
 564   3                              else
 565   3                              {
 566   4                                      temp_avc=temp_u51_b;
 567   4                                      c_sample=0;
 568   4                                      CTCON=CTCON|0x20;
 569   4                              }
 570   3                      }
 571   2                      else
 572   2                      {
 573   3                              gate=0;
 574   3                              CTCON=CTCON&0xCC;
 575   3                              AD1=0;
 576   3                              AD2=0;
 577   3                              AD3=0;
 578   3                              AD4=0;
 579   3                              AD5=0;
 580   3                              new_circle=1;
 581   3                              if(pulse_base==1)
 582   3                                      temp_avc=temp_u51_p;
 583   3                              else
 584   3                                      temp_avc=temp_u51_b;
 585   3                              CTCON=CTCON|0x20;
 586   3                      }
 587   2              }
 588   1      
 589   1      
 590   1              if(pulse_base==1)
 591   1                      CTCON=CTCON|0X80;       //CT3下降沿
 592   1              else
 593   1                      CTCON=CTCON|0X40;       //CT3上升沿
 594   1      }
 595          
 596          void ADC_int (void) interrupt 10
 597          {
 598   1              ADCON=ADCON&0xEF;                       //清ADC中断标志
 599   1              c_sample++;                                                     //2005-3-3
 600   1              adh=ADCH;
 601   1              adl=ADCON&0xC0;
 602   1              adh=adh<<2;
 603   1              adl=adl>>6;
 604   1              ad=adh+adl;
 605   1              da=ad;
 606   1              AD5=(da*5000)/0x3FF;
 607   1              if(new_circle==1)
 608   1              {
 609   2                      new_circle=0;
 610   2                      AD1=AD5;
 611   2                      AD2=AD5;
 612   2                      AD3=AD5;
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 11  

 613   2                      AD4=AD5;
 614   2              }
 615   1              else
 616   1              {
 617   2                      AD5=(AD5+AD1+AD2+AD3+AD4)/5;
 618   2                      AD1=AD2;
 619   2                      AD2=AD3;
 620   2                      AD3=AD4;
 621   2                      AD4=AD5;
 622   2              }
 623   1              AD5=AD5*6/100;                          //AD5*30/5
 624   1      
 625   1              if(c_sample%5==0)
 626   1              {
 627   2                      if(AD5>=temp_avc)
 628   2                      {
 629   3                              SENS=AD5-temp_avc;
 630   3                              avc_dir=0;
 631   3                      }
 632   2                      else
 633   2                      {
 634   3                              SENS=temp_avc-AD5;
 635   3                              avc_dir=1;
 636   3                      }
 637   2                      if(SENS>=1)
 638   2                      {
 639   3                              switch(SENS)
 640   3                              {
 641   4                                      case 1: {
 642   5                                                      COM=0X36;
 643   5                                                      COUNT0=8000%256;                //500HZ
 644   5                                                      COUNT0=8000/256;
 645   5                                                      COM=0X76;
 646   5                                                      COUNT1=4;                       //2p,0.0075mm
 647   5                                                      COUNT1=0;
 648   5                                              }break;
 649   4                                      case 2:
 650   4                                      case 3: {
 651   5                                                      COM=0X36;
 652   5                                                      COUNT0=8000%256;                //500HZ
 653   5                                                      COUNT0=8000/256;
 654   5                                                      COM=0X76;
 655   5                                                      COUNT1=10;                      //5p,0.01875mm 0.1v
 656   5                                                      COUNT1=0;
 657   5      
 658   5                                              }break;
 659   4                                      case 4:
 660   4                                      case 5: {
 661   5                                                      COM=0X36;
 662   5                                                      COUNT0=8000%256;                //500HZ
 663   5                                                      COUNT0=8000/256;
 664   5                                                      COM=0X76;
 665   5                                                      COUNT1=20;
 666   5                                                      COUNT1=0;
 667   5                                                      out1=0;                 //10p,0.0375mm 0.2v
 668   5                                              }break;
 669   4                                      case 6:
 670   4                                      case 7: {
 671   5                                                      COM=0X36;
 672   5                                                      COUNT0=6757%256;
 673   5                                                      COUNT0=6757/256;
 674   5                                                      COM=0X76;
C51 COMPILER V7.06   AVC3                                                                  10/27/2005 11:09:51 PAGE 12  

 675   5                                                      COUNT1=32;
 676   5                                                      COUNT1=0;
 677   5                                              }break;
 678   4                                      case 8:
 679   4                                      case 9: {
 680   5                                                      COM=0X36;
 681   5                                                      COUNT0=5141%256;        //778hz
 682   5                                                      COUNT0=5141/256;
 683   5                                                      COM=0X76;
 684   5                                                      COUNT1=42;              //0.08mm 0.4v
 685   5                                                      COUNT1=0;
 686   5                                              }break;
 687   4                                      case 10:{
 688   5                                                      COM=0X36;
 689   5                                                      COUNT0=4000%256;        //1000hz
 690   5                                                      COUNT0=4000/256;
 691   5                                                      COM=0X76;
 692   5                                                      COUNT1=54;              //0.1mm 0.5v
 693   5                                                      COUNT1=0;
 694   5                                              }break;
 695   4                                      default:{
 696   5                                                      COM=0X36;
 697   5                                                      COUNT0=3376%256;        //1185hz
 698   5                                                      COUNT0=3376/256;
 699   5                                                      COM=0X76;
 700   5                                                      COUNT1=64;              //0.12mm 0.6v
 701   5                                                      COUNT1=0;
 702   5                                              }break;
 703   4                              }
 704   3      
 705   3                              CTCON=CTCON|0x02;
 706   3                              IEN1=IEN1|0X01;                 //允许CT0,弧长调整长度
 707   3                              avc_enable=0;
 708   3                              gate=1;
 709   3                      }
 710   2                      c_sample=0;
 711   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)))
 712   2                              CTCON=CTCON|0x20;
 713   2              }
 714   1              else
 715   1              {
 716   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)))
 717   2                              CTCON=CTCON|0x20;
 718   2              }
 719   1              ad_finish=1;                            //AD转换及处理完成
 720   1      }
 721          
 722          main()
 723          {
 724   1              TMOD=0x22;                              //定时器1,方式2;定时器0,方式3,两个8位定时器;
 725   1              TL1=0XFD;                               //波特率9600
 726   1              TH1=0XFD;
 727   1              TR1=1;                                  //启动定时器
 728   1              TMOD=0x23;                              //定时器0,方式3,两个8位定时器;
 729   1              TR1=0;
 730   1              TF1=0;
 731   1              S0CON=0XF8;                             //串口方式3,SM2=1,REN=1,TB8=1,RB8=0,TI=0,RI=0
 732   1              IP1=0X01;                               //CT0高优先级
 733   1              IP0=0X98;                               //S0=1,T1=1
 734   1              ES0=1;                                  //开串口中断

⌨️ 快捷键说明

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