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

📄 current3.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 522   4                                      r_byte_nums=4;
 523   4                              }
 524   3                      }
 525   2                      else
 526   2                              POINTER1=0;
 527   2              }
 528   1              EA=1;                                       //开中断
 529   1      }
 530          
 531          void S1_int (void) interrupt 5      //I2C
 532          {
 533   1              ES1=0;
 534   1              if(S1STA==0x00)
 535   1              {
 536   2                      FF=1;
 537   2                      S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 538   2              }
 539   1              if(S1STA==0x08)
 540   1              {
 541   2                      S1DAT=SLA;
 542   2                      S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 543   2              }
 544   1              if(S1STA==0x10)
 545   1              {
 546   2                      S1DAT=SLA;
 547   2                      S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 548   2              }
 549   1              if(S1STA==0x18)
 550   1              {
 551   2                      S1DAT=COMM;
C51 COMPILER V7.06   CURRENT3                                                              08/02/2005 11:16:30 PAGE 10  

 552   2                      S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 553   2              }
 554   1              if(S1STA==0x20)
 555   1              {
 556   2                      FF=1;
 557   2                      S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 558   2              }
 559   1              if(S1STA==0x28)
 560   1              {
 561   2                      S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 562   2                      FF=1;
 563   2              }
 564   1              if(S1STA==0x30)
 565   1              {
 566   2                      FF=1;
 567   2                      S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 568   2              }
 569   1              if(S1STA==0x38)
 570   1                      S1CON=0xE5; //STA=1   STO=0    SI=0     AA=1
 571   1              if(S1STA==0x40)
 572   1                      S1CON=0xC5; //STA=0   STO=0    SI=0     AA=1
 573   1              if(S1STA==0x48)
 574   1              {
 575   2                      FF=1;
 576   2                      S1CON=0xD5; //STA=0   STO=1    SI=0     AA=1
 577   2              }
 578   1              if(S1STA==0x50)
 579   1              {
 580   2                      GET=S1DAT;
 581   2                      S1CON=0xC1; //STA=0   STO=0    SI=0     AA=0
 582   2              }
 583   1              if(S1STA==0x58)
 584   1              {
 585   2                      FF=1;
 586   2                      S1CON=0xD5; //STA=0   STO=1   SI=0     AA=1
 587   2              }
 588   1              ES1=1;
 589   1      }
 590          
 591          void CT0_int (void) interrupt 6                 //横摆使能输入
 592          {
 593   1              CTI0=0;
 594   1              CTCON=CTCON&0XFC;                       //禁止上升、下降
 595   1              if(edge==0)
 596   1              {
 597   2                      current_out=1;                                  //峰值
 598   2                      IEN1=IEN1&0XDF;                         //禁止CM1,停峰、基时间
 599   2                      if(ahf_ok==1)
 600   2                      {
 601   3                              IM8=IML_ahf;
 602   3                              IM4=IMH_ahf;
 603   3                              IB8=IMML_ahf;
 604   3                              IB4=IMMH_ahf;
 605   3                              UPD=0X00;
 606   3                      }
 607   2                      else
 608   2                      {
 609   3                              IM8=IML;
 610   3                              IM4=IMH;
 611   3                              IB8=IML;
 612   3                              IB4=IMH;
 613   3                              UPD=0X00;
C51 COMPILER V7.06   CURRENT3                                                              08/02/2005 11:16:30 PAGE 11  

 614   3                      }
 615   2                      edge=1;
 616   2                      CTCON=CTCON|0X01;                       //CT0上升沿
 617   2              }
 618   1              else
 619   1              {
 620   2                      edge=0;
 621   2                      current_out=0;          
 622   2                      CTCON=CTCON|0X02;                       //CT0下降沿
 623   2                      CML1=TML2+0XE2;         //峰值时间
 624   2                      if(CML1<TML2)
 625   2                              CMH1=(TMH2+1)+0X04;
 626   2                      else
 627   2                              CMH1=TMH2+0X04;
 628   2                      c_cm1=0;
 629   2                      IEN1=IEN1|0X20;                         //允许CM1,峰、基时间
 630   2              }
 631   1      }
 632                  
 633          void CT2_int (void) interrupt 8                 //采样保持脉冲
 634          {
 635   1              CTI2=0;
 636   1              if(current_out==1&&ad_finish==1)
 637   1              {
 638   2                      ad_finish=0;                    //采样进行标志
 639   2                      if(i_v==0)
 640   2                              ADCON=0x09;             //启动电流采样
 641   2                      else
 642   2                              ADCON=0X08;             //启动电压采样
 643   2              }
 644   1      }
 645          
 646          void ADC_int (void) interrupt 10                //AD采样中断
 647          {
 648   1              ADCON=ADCON&0xEF;                       //清ADC中断标志
 649   1              CTCON=CTCON&0XCF;
 650   1              IEN1=IEN1&0XFB;                         //禁止CT2
 651   1              c_adc++;
 652   1              adh=ADCH;
 653   1              adl=ADCON&0xC0;
 654   1              adh=adh<<2;
 655   1              adl=adl>>6;
 656   1              ad=adh+adl;
 657   1              da=ad;
 658   1              AD5=(da*5000)/0x3FF;
 659   1      
 660   1              if(i_v==0)                                              //电流采样
 661   1              {
 662   2                      ad_i=10000*AD5/4920;
 663   2                      if(ad_i<50)                                     //电流小于5.0A
 664   2                              tab2++;
 665   2                      if(c_adc==1)
 666   2                      {
 667   3                              AD1=ad_i;
 668   3                              AD2=ad_i;
 669   3                              AD3=ad_i;
 670   3                              AD4=ad_i;
 671   3                      }
 672   2                      else
 673   2                      {
 674   3                              ad_i=(ad_i+AD1+AD2+AD3+AD4)/5;
 675   3                              AD1=AD2;
C51 COMPILER V7.06   CURRENT3                                                              08/02/2005 11:16:30 PAGE 12  

 676   3                              AD2=AD3;
 677   3                              AD3=AD4;
 678   3                              AD4=ad_i;
 679   3                      }
 680   2              }
 681   1              else                                                    //电压采样
 682   1              {
 683   2      
 684   2                      ad_v=1000*AD5/4920;
 685   2                      if(ad_v<25)
 686   2                              tab3++;
 687   2                      if(c_adc==6)
 688   2                      {
 689   3                              AD1=ad_v;
 690   3                              AD2=ad_v;
 691   3                              AD3=ad_v;
 692   3                              AD4=ad_v;
 693   3                      }
 694   2                      else
 695   2                      {
 696   3                              ad_v=(ad_v+AD1+AD2+AD3+AD4)/5;
 697   3                              AD1=AD2;
 698   3                              AD2=AD3;
 699   3                              AD3=AD4;
 700   3                              AD4=ad_v;
 701   3                      }                               //电压小于2.5V
 702   2              }
 703   1      
 704   1      /*
 705   1              if((tab2>=5||tab3>=5)&&work==3)
 706   1              {
 707   1      //              err_operate();
 708   1              }
 709   1              else
 710   1              {
 711   1      */
 712   1                      if(c_adc<=5)                                    //电流采样
 713   1                      {
 714   2                              if(c_adc==5)                            //电流——电压
 715   2                              {
 716   3                                      i_v=1;                          //电压采样标志
 717   3                                      AD1=0;
 718   3                                      AD2=0;
 719   3                                      AD3=0;
 720   3                                      AD4=0;
 721   3                                      tab2=0;
 722   3                              }
 723   2                              ad_finish=1;
 724   2                              CTCON=CTCON|0X20;
 725   2                              IEN1=IEN1|0X04;                 //允许CT2
 726   2                      }
 727   1                      if(c_adc>5&&c_adc<=10)
 728   1                      {
 729   2                                      if(c_adc==10)                   //电压——电流
 730   2                                      {
 731   3                                              i_v=0;                  //电流采样标志
 732   3                                              c_adc=0;
 733   3                                              AD1=0;
 734   3                                              AD2=0;
 735   3                                              AD3=0;
 736   3                                              AD4=0;
 737   3                                              tab3=0;
C51 COMPILER V7.06   CURRENT3                                                              08/02/2005 11:16:30 PAGE 13  

 738   3                                      }
 739   2                                      ad_finish=1;
 740   2                                      CTCON=CTCON|0X20;
 741   2                                      IEN1=IEN1|0X04;                 //允许CT2
 742   2                      }
 743   1      //      }
 744   1      }
 745          
 746          void CM1_int (void)   interrupt 12              //电流脉冲输出(峰、基值时间)
 747          {
 748   1              CMI1=0;
 749   1              c_cm1++;
 750   1              if(current_out==1&&c_cm1==n_pulse||current_out==0&&c_cm1==n_base)
 751   1              {
 752   2                      if(decrease==1||ahf_ok==0)
 753   2                      {
 754   3                              if(current_out==1)
 755   3                              {
 756   4                                      IM8=IBL;
 757   4                                      IM4=IBH;
 758   4                                      IB8=IBL;
 759   4                                      IB4=IBH;
 760   4                                      UPD=0X00;
 761   4                              }
 762   3                              else
 763   3                              {
 764   4                                      IM8=IML;
 765   4                                      IM4=IMH;
 766   4                                      IB8=IML;
 767   4                                      IB4=IMH;
 768   4                                      UPD=0X00;
 769   4                              }
 770   3                      }
 771   2                      else
 772   2      //              if(ahf_ok==1)
 773   2                      {
 774   3                              if(current_out==1)
 775   3                              {
 776   4                                      IM8=IBL_ahf;
 777   4                                      IM4=IBH_ahf;
 778   4                                      IB8=IBBL_ahf;
 779   4                                      IB4=IBBH_ahf;
 780   4                                      UPD=0X00;
 781   4                              }
 782   3                              else
 783   3                              {
 784   4                                      IM8=IML_ahf;
 785   4                                      IM4=IMH_ahf;
 786   4                                      IB8=IMML_ahf;

⌨️ 快捷键说明

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