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

📄 main1_zw.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 459   1      
 460   1              if(RI==1)                                               //接收完成
 461   1              {
 462   2                      RI=0;
 463   2                      POINTER1++;                             //接收缓冲指针加1
 464   2                      rbuffer[POINTER1-1]=SBUF;               //从接收缓冲读出数据
 465   2                      if(POINTER1==2)
 466   2                              r_byte_nums=get_byte_nums(rbuffer[1]);
 467   2                      if(POINTER1<r_byte_nums)
 468   2                              RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 469   2                      else
 470   2                      {
 471   3                              if(rbuffer[r_byte_nums-1]==RSUM)
 472   3                              {
 473   4                                      if(ans==0)
 474   4                                      {
 475   5                                              POINTER1=0;
 476   5                                              RSUM=0;
 477   5                                      }
 478   4                                      S_ANSW=OK;
 479   4                                      data_type();
 480   4                              }
 481   3                              else
 482   3                              {
 483   4                                      S_ANSW=FAIL;
 484   4                                      if(resend==0)
 485   4                                              resend=1;
 486   4                              }
 487   3                      }
 488   2              }
C51 COMPILER V7.06   MAIN1_ZW                                                              10/04/2005 14:08:50 PAGE 9   

 489   1              EA=1;                                       //开中断
 490   1      }
 491          
 492          main()
 493          {
 494   1      uchar i,j,delt;
 495   1      
 496   1              TMOD=0x22;                      //定时器1,方式2;
 497   1              TL1=0XFD;                       //波特率9600
 498   1              TH1=0XFD;
 499   1              TR1=1;                          //启动定时器
 500   1      //      PCON=0X80;                      //SMOD=1;
 501   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 502   1              TR1=0;
 503   1              TF1=0;
 504   1              SCON=0X50;                      //串口方式1,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 505   1              IP=0X98;                        //S0=1,T1=1
 506   1      //      EX0=1;                          //急停
 507   1              ES=1;                           //开串口中断
 508   1              ET1=1;
 509   1              EX0=1;
 510   1              EA=1;                           //中断总允许
 511   1              
 512   1              temp_c=0;
 513   1      
 514   1              pc_ok=0;
 515   1              urgent_stop=0;
 516   1              main1_err=0;
 517   1      
 518   1      BEGIN:
 519   1              if(urgent_stop==1)
 520   1              {               
 521   2                      urgent_stop=0;
 522   2                      EX0=1;
 523   2              }
 524   1      
 525   1              pc_stop=0;
 526   1              urgent_stop=0;
 527   1              err_ok=1;
 528   1              work=0;
 529   1              start=0;
 530   1              err=0;                          //错误编号
 531   1              editing=0;                      //正在编程
 532   1              edit_finish=0;                  //编程结束
 533   1              p_received=0;
 534   1              change_prg=0;
 535   1              connect=0;
 536   1              break_connect=0;
 537   1              in_sector=0;
 538   1              nonce_sec=0;                    //当前区间号
 539   1              FINISH=0;
 540   1              CURRENT=0;
 541   1              VOLTAGE=0;
 542   1              AVC=0;
 543   1              decrease=0;
 544   1              rot_front=0;
 545   1              rot_reverse=0;
 546   1              wire_add=0;
 547   1              wire_dec=0;
 548   1              osc_l=0;
 549   1              osc_r=0;
 550   1              avc_up=0;
C51 COMPILER V7.06   MAIN1_ZW                                                              10/04/2005 14:08:50 PAGE 10  

 551   1              avc_down=0;
 552   1              temp_motor_stop=0;
 553   1              motor_stop=0;
 554   1              new_switch1=0;
 555   1              new_switch2=0;
 556   1              new_switch3=0;
 557   1              start_again=0;
 558   1              need_para=0;
 559   1              p_changed=0;
 560   1              edited=0;
 561   1      
 562   1              POINTER0=0;
 563   1              SSUM=0;
 564   1              S_ANSW=0;
 565   1              POINTER1=0;
 566   1              RSUM=0;
 567   1              ans=0;
 568   1              R_ANSW=0;
 569   1              r_byte_nums=4;
 570   1              noans_ok=1;
 571   1              overtime=0;
 572   1              s_p=0;                          //1,发送参数
 573   1      
 574   1      
 575   1      //      rc_forbided=1;
 576   1      
 577   1              while(start==0)
 578   1              {
 579   2                      if(urgent_stop==1)
 580   2                                      {
 581   3                                              if(pc_stop==1)
 582   3                                              {
 583   4                                                      ini_sbuf(M_PC,answer,S_ANSW,0,0);
 584   4                                                      s_byte_nums=4;
 585   4                                                      TR_noans();
 586   4                                                      stop=0;
 587   4                                                      while(err_ok==0);
 588   4                                              }
 589   3                                              goto BEGIN;
 590   3                                      }
 591   2                      if(connect==1)
 592   2                      {
 593   3                              ini_sbuf(M_PC,answer,OK,0,0);
 594   3                              s_byte_nums=4;
 595   3                              TR_noans();
 596   3                              pc_ok=1;
 597   3                              connect=0;
 598   3                      }
 599   2                      if(break_connect==1)
 600   2                      {
 601   3                              ini_sbuf(M_PC,answer,OK,0,0);
 602   3                              s_byte_nums=4;
 603   3                              TR_noans();
 604   3                              pc_ok=0;
 605   3                              break_connect=0;
 606   3                      }
 607   2      /*
 608   2                      if(p_forbid==1)
 609   2                      {
 610   2                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 611   2                              s_byte_nums=4;
 612   2                              TR_noans();
C51 COMPILER V7.06   MAIN1_ZW                                                              10/04/2005 14:08:50 PAGE 11  

 613   2                              p_forbided=1;
 614   2                              p_actived=0;
 615   2                              p_forbid=0;
 616   2                      }
 617   2                      if(rc_forbid==1)
 618   2                      {
 619   2                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 620   2                              s_byte_nums=4;
 621   2                              TR_noans();
 622   2                              rc_forbided=1;
 623   2                              rc_actived=0;
 624   2                              rc_forbid=0;
 625   2                      }
 626   2      */
 627   2                      if(temp_motor_stop==1)
 628   2                      {
 629   3                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 630   3                              s_byte_nums=4;
 631   3                              TR_noans();
 632   3                              motor_stop=1;
 633   3                              temp_motor_stop=0;
 634   3                      }
 635   2                      if(editing==1)
 636   2                      {
 637   3                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 638   3                              s_byte_nums=4;
 639   3                              TR_noans();
 640   3      
 641   3                              while(p_received==0)
 642   3                              {
 643   4                                      if(urgent_stop==1)
 644   4                                      {
 645   5                                              if(pc_stop==1)
 646   5                                              {
 647   6                                                      ini_sbuf(M_PC,answer,S_ANSW,0,0);
 648   6                                                      s_byte_nums=4;
 649   6                                                      TR_noans();
 650   6                                                      stop=0;
 651   6                                                      while(err_ok==0);
 652   6                                              }
 653   5                                              goto BEGIN;
 654   5                                      }
 655   4                                      if(resend==1)
 656   4                                      {
 657   5                                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 658   5                                              s_byte_nums=4;
 659   5                                              TR_noans();
 660   5                                              p_received=0;
 661   5                                              resend=0;
 662   5                                      }
 663   4                              }
 664   3                              point=&pp.pn;
 665   3                              delt=0;
 666   3                              for(i=2;i<55;i++)
 667   3                              {
 668   4                                      *(point+i-2)=rbuffer[i+delt]*256+rbuffer[i+delt+1];
 669   4                                      delt++;
 670   4                              }
 671   3                              p_received=0;
 672   3                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 673   3                              s_byte_nums=4;
 674   3                              TR_noans();
C51 COMPILER V7.06   MAIN1_ZW                                                              10/04/2005 14:08:50 PAGE 12  

 675   3      
 676   3                              while(p_received==0)
 677   3                              {
 678   4                                      if(urgent_stop==1)
 679   4                                      {
 680   5                                              if(pc_stop==1)
 681   5                                              {
 682   6                                                      ini_sbuf(M_PC,answer,S_ANSW,0,0);
 683   6                                                      s_byte_nums=4;
 684   6                                                      TR_noans();
 685   6                                                      stop=0;
 686   6                                                      while(err_ok==0);
 687   6                                              }
 688   5                                              goto BEGIN;
 689   5                                      }
 690   4                                      if(resend==1)
 691   4                                      {

⌨️ 快捷键说明

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