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

📄 current.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 503   1              CTCON=CTCON&0XFC;                       //禁止上升、下降
 504   1      //      IEN1=IEN1&0xFE;
 505   1              if(edge==0)
 506   1              {
 507   2                      current_out=1;                                  //峰值
 508   2                      IEN1=IEN1&0XDF;                         //禁止CM1,停峰、基时间
 509   2                      edge=1;
 510   2                      CTCON=CTCON|0X01;                       //CT0上升沿
 511   2              }
 512   1              else
 513   1              {
 514   2                      edge=0;
 515   2                      current_out=0;
 516   2                      CTCON=CTCON|0X02;                       //CT0下降沿
 517   2                      CML1=TML2+0XE2;         //峰值时间
 518   2                      if(CML1<TML2)
 519   2                              CMH1=(TMH2+1)+0X04;
 520   2                      else
 521   2                              CMH1=TMH2+0X04;
 522   2                      c_cm1=0;
 523   2                      IEN1=IEN1|0X20;                         //允许CM1,峰、基时间
 524   2              }
 525   1      //      IEN1=IEN1|0x01;
 526   1      }
 527                  
 528          void CT2_int (void) interrupt 8                 //采样保持脉冲
 529          {
 530   1              CTI2=0;
 531   1              if(current_out==1&&ad_finish==1)
 532   1              {
 533   2                      ad_finish=0;                    //采样进行标志
 534   2                      if(i_v==0)
 535   2                              ADCON=0x09;             //启动电流采样
 536   2                      else
 537   2                              ADCON=0X08;             //启动电压采样
 538   2              }
 539   1      }
 540          
 541          void ADC_int (void) interrupt 10                //AD采样中断
 542          {
 543   1              ADCON=ADCON&0xEF;                       //清ADC中断标志
 544   1              CTCON=CTCON&0XCF;
 545   1              IEN1=IEN1&0XFB;                         //禁止CT2
 546   1              c_adc++;
 547   1              adh=ADCH;
 548   1              adl=ADCON&0xC0;
 549   1              adh=adh<<2;
 550   1              adl=adl>>6;
C51 COMPILER V7.06   CURRENT                                                               06/21/2005 15:24:34 PAGE 10  

 551   1              ad=adh+adl;
 552   1              da=ad;
 553   1              AD5=(da*5000)/0x3FF;
 554   1      
 555   1              if(i_v==0)                                              //电流采样
 556   1              {
 557   2                      ad_i=10000*AD5/4920;
 558   2                      if(ad_i<50)                                     //电流小于5.0A
 559   2                              tab2++;
 560   2                      if(c_adc==1)
 561   2                      {
 562   3                              AD1=ad_i;
 563   3                              AD2=ad_i;
 564   3                              AD3=ad_i;
 565   3                              AD4=ad_i;
 566   3                      }
 567   2                      else
 568   2                      {
 569   3                              ad_i=(ad_i+AD1+AD2+AD3+AD4)/5;
 570   3                              AD1=AD2;
 571   3                              AD2=AD3;
 572   3                              AD3=AD4;
 573   3                              AD4=ad_i;
 574   3                      }
 575   2              }
 576   1              else                                                    //电压采样
 577   1              {
 578   2      
 579   2                      ad_v=1000*AD5/4920;
 580   2                      if(ad_v<25)
 581   2                              tab3++;
 582   2                      if(c_adc==6)
 583   2                      {
 584   3                              AD1=ad_v;
 585   3                              AD2=ad_v;
 586   3                              AD3=ad_v;
 587   3                              AD4=ad_v;
 588   3                      }
 589   2                      else
 590   2                      {
 591   3                              ad_v=(ad_v+AD1+AD2+AD3+AD4)/5;
 592   3                              AD1=AD2;
 593   3                              AD2=AD3;
 594   3                              AD3=AD4;
 595   3                              AD4=ad_v;
 596   3                      }                               //电压小于2.5V
 597   2              }
 598   1      
 599   1      /*
 600   1              if((tab2>=5||tab3>=5)&&work==3)
 601   1              {
 602   1      //              err_operate();
 603   1              }
 604   1              else
 605   1              {
 606   1      */
 607   1                      if(c_adc<=5)                                    //电流采样
 608   1                      {
 609   2                              if(c_adc==5)                            //电流——电压
 610   2                              {
 611   3                                      i_v=1;                          //电压采样标志
 612   3                                      AD1=0;
C51 COMPILER V7.06   CURRENT                                                               06/21/2005 15:24:34 PAGE 11  

 613   3                                      AD2=0;
 614   3                                      AD3=0;
 615   3                                      AD4=0;
 616   3                                      tab2=0;
 617   3                              }
 618   2                              ad_finish=1;
 619   2                              CTCON=CTCON|0X20;
 620   2                              IEN1=IEN1|0X04;                 //允许CT2
 621   2                      }
 622   1                      if(c_adc>5&&c_adc<=10)
 623   1                      {
 624   2                                      if(c_adc==10)                   //电压——电流
 625   2                                      {
 626   3                                              i_v=0;                  //电流采样标志
 627   3                                              c_adc=0;
 628   3                                              AD1=0;
 629   3                                              AD2=0;
 630   3                                              AD3=0;
 631   3                                              AD4=0;
 632   3                                              tab3=0;
 633   3                                      }
 634   2                                      ad_finish=1;
 635   2                                      CTCON=CTCON|0X20;
 636   2                                      IEN1=IEN1|0X04;                 //允许CT2
 637   2                      }
 638   1      //      }
 639   1      }
 640          
 641          void CM1_int (void)   interrupt 12              //电流脉冲输出(峰、基值时间)
 642          {
 643   1              CMI1=0;
 644   1              c_cm1++;
 645   1              if(current_out==1&&c_cm1==n_pulse||current_out==0&&c_cm1==n_base)
 646   1              {
 647   2                      current_out=~current_out;
 648   2                      c_cm1=0;
 649   2              }
 650   1              CML1=TML2+0XE2;         //峰值时间
 651   1              if(CML1<TML2)
 652   1                      CMH1=(TMH2+1)+0X04;
 653   1              else
 654   1                      CMH1=TMH2+0X04;
 655   1      }
 656          
 657          void CM2_int (void)   interrupt 13              //关水计时
 658          {
 659   1              CMI2=0;
 660   1              c_cm2++;
 661   1              if(c_cm2==240)
 662   1              {
 663   2                      con_water=1;                    //关水
 664   2                      IEN1=IEN1&0xDF;                 //禁止CM1
 665   2                      c_cm2=0;
 666   2              }
 667   1              CML2=TML2+0x24;
 668   1              if(CML2<TML2)
 669   1                      CMH2=TMH2+1+0xF4;
 670   1              else
 671   1                      CMH2=TMH2+0xF4;
 672   1      }
 673          
 674          main()
C51 COMPILER V7.06   CURRENT                                                               06/21/2005 15:24:34 PAGE 12  

 675          {
 676   1              unsigned char k,k1,k2;
 677   1              unsigned int temp_delt_p,temp_delt_b;
 678   1              current_enable=0;
 679   1              TMOD=0x22;                      //定时器1,方式2;
 680   1              TL1=0XFD;                       //波特率9600
 681   1              TH1=0XFD;
 682   1              TR1=1;                          //启动定时器
 683   1              PCON=0X00;                      //SMOD=1
 684   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 685   1              TR1=0;
 686   1              TF1=0;
 687   1              S0CON=0XF8;                     //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 688   1              IP0=0X98;                       //S0=1
 689   1              IP1=IP1|0X20;
 690   1              ES0=1;                          //开串口中断
 691   1              ET0=1;
 692   1              ET1=1;
 693   1              ES1=1;                          //I2C
 694   1              EAD=1;                          //AD中断允许
 695   1              EA=1;                           //中断总允许
 696   1              start_t2();
 697   1              
 698   1              urgent_stop=0;
 699   1              current_err=0;
 700   1              err_ok=0;
 701   1              err=0;
 702   1      BEGIN:  
 703   1              if(urgent_stop==1)
 704   1              {
 705   2                      urgent_stop=0;
 706   2                      err_ok=0;
 707   2                      EX1=1;
 708   2                      EX0=1;
 709   2              }       
 710   1              IEN1=IEN1&0x40;
 711   1              current_out=1;
 712   1              current_enable=0;
 713   1              con_hf=1;
 714   1              con_gas1=1;
 715   1              con_gas2=1;
 716   1              work=0;                         //等待状态      
 717   1              called=0;
 718   1              start=0;
 719   1              need_para=0;
 720   1              open_gas1=0;
 721   1              open_gas2=0;
 722   1              ignit_ok=0;
 723   1              decrease=0;
 724   1              igniting=0;
 725   1              pre_melt_ok=0;
 726   1              R_ANSW=0;
 727   1              S_ANSW=0;
 728   1              POINTER1=0;
 729   1              RSUM=0;
 730   1              POINTER0=0;
 731   1              SSUM=0;
 732   1              r_byte_nums=4;
 733   1              demand=0;
 734   1              overtime=0;
 735   1              resend=0;
 736   1              ans=0;
C51 COMPILER V7.06   CURRENT                                                               06/21/2005 15:24:34 PAGE 13  

 737   1              receive_p_out=0;
 738   1              receive_p_in=0;
 739   1              edge=0;
 740   1              ad_v=0;
 741   1              ad_i=0;
 742   1              AD1=0;
 743   1              AD2=0;
 744   1              AD3=0;
 745   1              AD4=0;
 746   1              AD5=0;
 747   1              tab2=0;
 748   1              tab3=0;
 749   1              IM8=0;
 750   1              IM4=0;
 751   1              IB8=0;
 752   1              IB4=0;
 753   1              UPD=0;
 754   1              ad_finish=0;
 755   1              i_slope_ok=0;
 756   1              nonce_sec=0;
 757   1              in_sector=0;
 758   1              new_sec=0;

⌨️ 快捷键说明

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