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

📄 dc.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 484   5                                              PWM1=temp_wire_vb;
 485   5                                              if(wire_ok==0)
 486   5                                                      wire_ok=1;
 487   5                                              else
 488   5                                                      w_slope_ok=1;
 489   5                                      }
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 9   

 490   4                                      else
 491   4                                              IEN1=IEN1|0x10;         //CM0
 492   4                              }
 493   3                              
 494   3                      }
 495   2              }
 496   1              else
 497   1              {
 498   2                      if(c_cm0<n_cm0)
 499   2                      {
 500   3                              CML0=TML2+0X50;                 //100ms
 501   3                              if(CML0<TML2)
 502   3                                      CMH0=TMH2+1+0XC3;
 503   3                              else
 504   3                                      CMH0=TMH2+0XC3;
 505   3                      }
 506   2                      else
 507   2                      {
 508   3                              IEN1=IEN1&0XEF;                 //CM0
 509   3                              PWM1=0;
 510   3                              wire_back=1;
 511   3                              wire_front=1;
 512   3                              retract_ok=1;
 513   3                      }
 514   2              }
 515   1      }
 516          
 517          void CM1_INT (void) interrupt 12                        //旋转速度变化
 518          {
 519   1              c_cm1++;
 520   1              if(c_cm1==n_cm1)
 521   1              {       
 522   2                      IEN1=IEN1&0xDF;                         //CM1
 523   2                      if(temp_rot_vp<rot_vp)
 524   2                      {
 525   3                              if(temp_rot_vp+1==rot_vp)
 526   3                                      temp_rot_vp=rot_vp;
 527   3                              else
 528   3                                      temp_rot_vp=temp_rot_vp+1;
 529   3                      }
 530   2      
 531   2                      if(temp_rot_vp>rot_vp)
 532   2                      {
 533   3                                      if(temp_rot_vp-1==rot_vp)
 534   3                                              temp_rot_vp=rot_vp;
 535   3                                      else
 536   3                                              temp_rot_vp=temp_rot_vp-1;
 537   3                      }
 538   2                      if(K21==ON)
 539   2                      {
 540   3                              if(temp_rot_vb<rot_vb)
 541   3                              {
 542   4                                      if(temp_rot_vb+1==rot_vb)
 543   4                                              temp_rot_vb=rot_vb;
 544   4                                      else
 545   4                                              temp_rot_vb=temp_rot_vb+1;
 546   4                              }
 547   3                              if(temp_rot_vb>rot_vb)
 548   3                              {
 549   4                                      if(temp_rot_vb-1==rot_vb)
 550   4                                              temp_rot_vb=rot_vb;
 551   4                                      else
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 10  

 552   4                                              temp_rot_vb=temp_rot_vb-1;
 553   4                              }
 554   3                      }
 555   2      
 556   2                      c_cm1=0;
 557   2                      CML1=TML2+0XC8;
 558   2                      if(CML1<TML2)                   //CM1,400us,旋转速度变化时间
 559   2                              CMH1=TMH2+1+0X00;
 560   2                      else
 561   2                              CMH1=TMH2+0X00;
 562   2              
 563   2                      if(K21==OFF)
 564   2                      {
 565   3                              PWM0=temp_rot_vp;
 566   3                              if(temp_rot_vp==rot_vp)
 567   3                              {
 568   4                                      if(rot_ok==0)
 569   4                                              rot_ok=1;
 570   4                                      else
 571   4                                              r_slope_ok=1;
 572   4                              }
 573   3                              else
 574   3                                      IEN1=IEN1|0x20;         //CM1
 575   3                      }
 576   2                      else
 577   2                      {
 578   3                              if(temp_rot_vp==rot_vp&&temp_rot_vb==rot_vb)
 579   3                              {
 580   4                                      PWM0=temp_rot_vb;
 581   4                                      if(rot_ok==0)
 582   4                                              rot_ok=1;
 583   4                                      else
 584   4                                              r_slope_ok=1;
 585   4                              }
 586   3                              else
 587   3                                      IEN1=IEN1|0x20;         //CM1
 588   3                      }
 589   2              }
 590   1      }
 591          main()
 592          {
 593   1              TMOD=0x22;                      //定时器1,方式2;
 594   1              TL1=0XFD;                       //波特率9600
 595   1              TH1=0XFD;
 596   1              TR1=1;                          //启动定时器
 597   1              PCON=0X00;                      //SMOD=0
 598   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 599   1              TR1=0;
 600   1              TF1=0;
 601   1              S0CON=0XF8;                     //串口方式3,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 602   1              IP0=0X98;                       //S0=1,T1=1
 603   1              ES0=1;                          //开串口中断
 604   1              ET0=1;
 605   1              ET1=1;
 606   1              ES1=1;                          //I2C
 607   1              EAD=1;                          //AD中断允许
 608   1              EA=1;                           //中断总允许
 609   1              start_t2();
 610   1      
 611   1              urgent_stop=0;
 612   1              rw_err=0;
 613   1              err_ok=0;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 11  

 614   1              err=0;
 615   1              
 616   1      BEGIN:  if(urgent_stop==1)
 617   1              {
 618   2                      urgent_stop=0;
 619   2                      err_ok=0;
 620   2                      EX1=1;
 621   2                      EX0=1;
 622   2              }
 623   1              work=0;
 624   1              send_enable=0;                          //关发送使能
 625   1              start=0;
 626   1              start_rot=0;
 627   1              start_wire=0;
 628   1              stop_wire=0;
 629   1              decrease=0;
 630   1              need_para=0;
 631   1              nonce_sec=0;
 632   1              in_sector=0;
 633   1              new_sector=0;
 634   1              noans_ok=1;
 635   1              S_ANSW=0;
 636   1      //      R_ANSW=0;
 637   1              POINTER0=0;
 638   1              SSUM=0;
 639   1              POINTER1=0;
 640   1              RSUM=0;
 641   1              r_byte_nums=4;
 642   1              send=0;
 643   1              overtime=0;
 644   1              receive_p_out=0;
 645   1              receive_p_in=0;
 646   1              demand=0;
 647   1              resend=0;
 648   1              ans=0;
 649   1              p_b=0;                          //基值
 650   1              temp_pulse_num=0;
 651   1              FINISH=0;
 652   1              rot_front=0;
 653   1              rot_reverse=0;
 654   1              rot_ok=0;
 655   1              rot_stop=0;
 656   1              rot_stop_ok=0;
 657   1              wire_add=0;
 658   1              wire_dec=0;
 659   1              wire_ok=0;
 660   1              r_slope_ok=1;
 661   1              w_slope_ok=1;
 662   1              motor_stop=0;
 663   1              retract=0;
 664   1              c_cm0=0;
 665   1              c_cm1=0;
 666   1              k_r_p_add=0;
 667   1              k_r_b_add=0;
 668   1              k_r_p_dec=0;
 669   1              k_r_b_dec=0;
 670   1              temp_rot_vp=0;
 671   1              temp_rot_vb=0;
 672   1              temp_wire_vp=0;
 673   1              temp_wire_vb=0;
 674   1              retract_ok=0;
 675   1              auto_return=0;
C51 COMPILER V7.06   DC                                                                    06/22/2005 09:40:54 PAGE 12  

 676   1              return_ok=0;
 677   1              ask_return_ok=0;
 678   1              to_begin=0;
 679   1      
 680   1              PWMP=3;                         //23.5K
 681   1              CML0=TML2+0xC8;                 //CM0,400us,送丝速度变化时间
 682   1              if(CML0<TML2)
 683   1                      CMH0=TMH2+1+0X00;
 684   1              else
 685   1                      CMH0=TMH2+0X00;
 686   1              CML1=TML2+0XC8;
 687   1              if(CML1<TML2)                   //CM1,400us,旋转速度变化时间
 688   1                      CMH1=TMH2+1+0X00;
 689   1              else
 690   1                      CMH1=TMH2+0X00;
 691   1      
 692   1              CTCON=CTCON|0X02;               //CT0捕捉下降沿
 693   1              tooth_num=11;
 694   1              EX1=1;
 695   1              EX0=1;
 696   1              while(start==0)
 697   1              {
 698   2                      if(called==1)
 699   2                      {
 700   3                              ini_sbuf(M_main,infor,com_calling,S_ANSW,0,0);
 701   3                              s_byte_nums=get_byte_nums(infor);
 702   3                              TR_noans();
 703   3                              called=0;
 704   3                      }
 705   2      
 706   2                      if(receive_p_out==1)
 707   2                      {
 708   3                              point=&pp.k2;
 709   3                              for(p_sec=0;p_sec<24;p_sec++)
 710   3                                      *(point+p_sec)=rbuffer[p_sec*2+2]*256+rbuffer[p_sec*2+3];
 711   3                              pp.k1=rbuffer[50];
 712   3                              
 713   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 714   3                              s_byte_nums=4;
 715   3                              TR_noans();
 716   3                              demand=0;
 717   3                              receive_p_out=0;
 718   3                      }
 719   2      
 720   2                      if(receive_p_in==1)
 721   2                      {
 722   3                              point=&pp.x[nonce_sec][0];
 723   3                              for(p_sec=0;p_sec<10;p_sec++)
 724   3                                      *(point+p_sec)=rbuffer[p_sec*2+3]*256+rbuffer[p_sec*2+4];
 725   3      
 726   3                              ini_sbuf(M_main,answer,S_ANSW,0,0,0);
 727   3                              s_byte_nums=4;
 728   3                              TR_noans();

⌨️ 快捷键说明

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