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

📄 main1_1013.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 463          {
 464   1              EX1=0;
 465   1              urgent_stop=1;
 466   1              err_ok=0;
 467   1      }
 468          
 469          void T1_INT (void) interrupt 3
 470          {
 471   1      //      EA=0;
 472   1              c_t1++;
 473   1              if(send==1)
 474   1              {
 475   2                      if(c_t1==7)
 476   2                      {
 477   3                              if(s_p==0)
 478   3                                      SBUF=sbuffer[POINTER0];
 479   3                              else
 480   3                                      SBUF=sbuffer1[POINTER0];
 481   3                              c_t1=0;
 482   3                      }
 483   2              }
 484   1              else
 485   1              {
 486   2                      if(c_t1==100)
 487   2                      {
 488   3                              TR1=0;
C51 COMPILER V7.50   MAIN1_1013                                                            01/18/2006 15:09:40 PAGE 9   

 489   3                              overtime=1;
 490   3                      }
 491   2              }
 492   1      //      EA=1;
 493   1      }
 494          
 495          void TR_INT (void) interrupt 4                                  //串行口中断
 496          {
 497   1              EA=0;                                                   //关中断
 498   1              if(TI==1)                                               //发送完成
 499   1              {
 500   2                      TI=0;
 501   2                      POINTER0++;                                     //发送缓冲指针加1
 502   2      //              if(POINTER0==1)
 503   2      //                      TB8=0;
 504   2                      if(POINTER0<s_byte_nums)
 505   2                      {
 506   3                              if(POINTER0<s_byte_nums-1)
 507   3                              {
 508   4                                      if(s_p==1)
 509   4                                              SSUM=SSUM+sbuffer1[POINTER0];
 510   4                                      else
 511   4                                              SSUM=SSUM+sbuffer[POINTER0];    //6个数据字节求和
 512   4                              }
 513   3                              else
 514   3                              {
 515   4                                      if(s_p==1)
 516   4                                              sbuffer1[s_byte_nums-1]=SSUM+sbuffer1[0];
 517   4                                      else
 518   4                                              sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
 519   4                              }
 520   3                      }
 521   2              }
 522   1      
 523   1              if(RI==1)                                               //接收完成
 524   1              {
 525   2                      RI=0;
 526   2                      POINTER1++;                             //接收缓冲指针加1
 527   2                      rbuffer[POINTER1-1]=SBUF;               //从接收缓冲读出数据
 528   2                      if(POINTER1==2)
 529   2                              r_byte_nums=get_byte_nums(rbuffer[1]);
 530   2                      if(POINTER1<r_byte_nums)
 531   2                              RSUM=RSUM+rbuffer[POINTER1-1];  //生成校验码
 532   2                      else
 533   2                      {
 534   3                              if(rbuffer[r_byte_nums-1]==RSUM)
 535   3                              {
 536   4                                      if(ans==0)
 537   4                                      {
 538   5                                              POINTER1=0;
 539   5                                              RSUM=0;
 540   5                                      }
 541   4                                      S_ANSW=OK;
 542   4                                      data_type();
 543   4                              }
 544   3                              else
 545   3                              {
 546   4                                      S_ANSW=FAIL;
 547   4                                      if(resend==0)
 548   4                                              resend=1;
 549   4                              }
 550   3                      }
C51 COMPILER V7.50   MAIN1_1013                                                            01/18/2006 15:09:40 PAGE 10  

 551   2              }
 552   1              EA=1;                                       //开中断
 553   1      }
 554          
 555          main()
 556          {
 557   1      uchar i,j,delt;
 558   1      
 559   1              TMOD=0x22;                      //定时器1,方式2;
 560   1              TL1=0XFD;                       //波特率9600
 561   1              TH1=0XFD;
 562   1              TR1=1;                          //启动定时器
 563   1      //      PCON=0X80;                      //SMOD=1;
 564   1              TMOD=0x23;                      //定时器0,方式3,两个8位定时器;
 565   1              TR1=0;
 566   1              TF1=0;
 567   1              SCON=0X50;                      //串口方式1,SM2=0,REN=1,TB8=1,RB8=0,TI=0,RI=0
 568   1              IP=0X98;                        //S0=1,T1=1
 569   1      //      EX0=1;                          //急停
 570   1              ES=1;                           //开串口中断
 571   1              ET1=1;
 572   1              EX0=1;
 573   1              EX1=1;
 574   1              EA=1;                           //中断总允许
 575   1              
 576   1              temp_c=0;
 577   1      
 578   1              pc_ok=0;
 579   1              urgent_stop=0;
 580   1              main1_err=0;
 581   1      
 582   1      BEGIN:  if(urgent_stop==1)
 583   1              {               
 584   2                      urgent_stop=0;
 585   2                      EX0=1;
 586   2                      EX1=1;
 587   2              }
 588   1      
 589   1              pc_stop=0;
 590   1              urgent_stop=0;
 591   1              err_ok=1;
 592   1              work=0;
 593   1              start=0;
 594   1      //      err=0;                          //错误编号
 595   1              editing=0;                      //正在编程
 596   1              edit_finish=0;                  //编程结束
 597   1              p_received=0;
 598   1              change_prg=0;
 599   1              connect=0;
 600   1              break_connect=0;
 601   1              in_sector=0;
 602   1      //      nonce_sec=0;                    //当前区间号
 603   1      //      FINISH=0;
 604   1      //      CURRENT=0;
 605   1      //      VOLTAGE=0;
 606   1      //      AVC=0;
 607   1      //      decrease=0;
 608   1      //      rot_front=0;
 609   1      //      rot_reverse=0;
 610   1      //      wire_add=0;
 611   1      //      wire_dec=0;
 612   1      //      osc_l=0;
C51 COMPILER V7.50   MAIN1_1013                                                            01/18/2006 15:09:40 PAGE 11  

 613   1      //      osc_r=0;
 614   1      //      avc_up=0;
 615   1      //      avc_down=0;
 616   1              temp_motor_stop=0;
 617   1      //      motor_stop=0;
 618   1              new_switch1=0;
 619   1              new_switch2=0;
 620   1              new_switch3=0;
 621   1      //      start_again=0;
 622   1              need_para=0;
 623   1              p_changed=0;
 624   1              edited=0;
 625   1      
 626   1              POINTER0=0;
 627   1              SSUM=0;
 628   1              S_ANSW=0;
 629   1              POINTER1=0;
 630   1              RSUM=0;
 631   1              ans=0;
 632   1              R_ANSW=0;
 633   1              r_byte_nums=4;
 634   1              noans_ok=1;
 635   1              overtime=0;
 636   1              s_p=0;                          //1,发送参数
 637   1              need_finish=0;
 638   1              pc_operate=0;
 639   1      
 640   1      //      rc_forbided=1;
 641   1      
 642   1              while(start==0||pc_ok==0)
 643   1              {
 644   2                      if(connect==1)
 645   2                      {
 646   3                              ini_sbuf(M_PC,answer,OK,0,0);
 647   3                              s_byte_nums=4;
 648   3                              TR_noans();
 649   3                              pc_ok=1;
 650   3                              connect=0;
 651   3                      }
 652   2                      if(break_connect==1)
 653   2                      {
 654   3                              ini_sbuf(M_PC,answer,OK,0,0);
 655   3                              s_byte_nums=4;
 656   3                              TR_noans();
 657   3                              pc_ok=0;
 658   3                              break_connect=0;
 659   3                      }
 660   2      /*
 661   2                      if(p_forbid==1)
 662   2                      {
 663   2                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 664   2                              s_byte_nums=4;
 665   2                              TR_noans();
 666   2                              p_forbided=1;
 667   2                              p_actived=0;
 668   2                              p_forbid=0;
 669   2                      }
 670   2                      if(rc_forbid==1)
 671   2                      {
 672   2                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 673   2                              s_byte_nums=4;
 674   2                              TR_noans();
C51 COMPILER V7.50   MAIN1_1013                                                            01/18/2006 15:09:40 PAGE 12  

 675   2                              rc_forbided=1;
 676   2                              rc_actived=0;
 677   2                              rc_forbid=0;
 678   2                      }
 679   2      */
 680   2                      if(temp_motor_stop==1)
 681   2                      {
 682   3                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 683   3                              s_byte_nums=4;
 684   3                              TR_noans();
 685   3                              motor_stop=1;
 686   3                              temp_motor_stop=0;
 687   3                      }
 688   2                      if(editing==1)
 689   2                      {
 690   3                              ini_sbuf(M_PC,answer,S_ANSW,0,0);
 691   3                              s_byte_nums=4;
 692   3                              TR_noans();
 693   3      
 694   3                              while(p_received==0)
 695   3                              {
 696   4                                      if(urgent_stop==1)
 697   4                                      {

⌨️ 快捷键说明

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