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

📄 rxr_cs.lst

📁 714771878051_MODBUS_RTU.rar
💻 LST
📖 第 1 页 / 共 4 页
字号:
 552   4                        sl_n=recebuf_com[4];sl_n=(sl_n<<8)|(recebuf_com[5]);        //读取的数量
 553   4                            sendbuf[2]=0x00;             //线圈Hi
 554   4                            sendbuf[3]=recebuf_com[3];   //线圈Li
 555   4                            sendbuf[4]=recebuf_com[4];   //
 556   4                            sendbuf[5]=recebuf_com[5];   //
 557   4                        switch  (sl_n)
 558   4                                              {
 559   5                                                      case 0xff00:    //on
 560   5                                                          {
 561   6                                                              command_05();
 562   6                                  switch (star_fun)
 563   6                                        {
 564   7                                        case 0:{jd_on(0x01);break;}
 565   7                                        case 1:{jd_on(0x02);break;}
 566   7                                        case 2:{jd_on(0x04);break;}
 567   7                                        case 3:{jd_on(0x08);break;}
 568   7                                        case 4:{jd_on(0x10);break;}
 569   7                                        case 5:{jd_on(0x20);break;}
 570   7                                        default:{break;}
 571   7                                        }
 572   6                                                              group_out_ad();
 573   6                                                              break;
 574   6                                                              }
 575   5                              case 0x0000:    //off
 576   5                                                          {
 577   6                                                              command_05();
 578   6                                                              switch (star_fun)
 579   6                                        {
 580   7                                        case 0:{jd_off(0x01);break;}
 581   7                                        case 1:{jd_off(0x02);break;}
 582   7                                        case 2:{jd_off(0x04);break;}
 583   7                                        case 3:{jd_off(0x08);break;}
 584   7                                        case 4:{jd_off(0x10);break;}
 585   7                                        case 5:{jd_off(0x20);break;}
 586   7                                        default:{break;}
 587   7                                        }
 588   6                                                              group_out_ad();
 589   6                                                              break;
 590   6                                                              }
 591   5                                                      default :
 592   5                                                          sendbuf[0]=addr;             //取地址
 593   5                                      sendbuf[1]=0xff;             //命令号
 594   5                                                              send_Len=2;                  //发送数据长度
 595   5                                                              group_out_ad();
 596   5                                                          break;
 597   5                                                      } 
 598   4                                        break;
 599   4                                        }
 600   3                   default:
 601   3                                      {
 602   4                                      sendbuf[0]=addr;             //取地址
 603   4                              sendbuf[1]=0xff;             //命令号
 604   4                                          send_Len=2;                  //发送数据长度
 605   4                                          group_out_ad();
 606   4                          break;
 607   4                                              }
 608   3                               }
 609   2                 }
 610   1           XJ=1;RUN=1;
 611   1               command_ok=0;    //消息处理完
 612   1               }
C51 COMPILER V7.06   RXR_CS                                                                06/26/2006 22:51:01 PAGE 11  

 613          
 614          void command_01(void)
 615               {
 616   1               sendbuf[0]=addr;             //取地址
 617   1               sendbuf[1]=0x01;             //命令号
 618   1               sendbuf[2]=0x01;             //返回字节数
 619   1               send_Len=4;                  //发送数据长度
 620   1               }
 621          
 622          void command_02(void)
 623               {
 624   1               sendbuf[0]=addr;             //取地址
 625   1               sendbuf[1]=0x02;             //命令号
 626   1               sendbuf[2]=0x01;             //返回字节数
 627   1               send_Len=4;                  //发送数据长度
 628   1               }
 629          
 630          void command_03(void)
 631               {
 632   1               sendbuf[0]=addr;             //取地址
 633   1               sendbuf[1]=0x03;             //命令号
 634   1               }
 635          
 636          void command_05(void)
 637               {
 638   1               sendbuf[0]=addr;             //取地址
 639   1               sendbuf[1]=0x05;             //命令号
 640   1               send_Len=6;                  //发送数据长度
 641   1               }
 642          
 643          
 644          /*=================================*/
 645          /*=======定时器0中断处理函数=======*/
 646          /*          中断计时1ms            */
 647          /*=================================*/
 648          void timer0(void) interrupt 1 using 2
 649               {
 650   1               TH0  = 0xf8;
 651   1           TL0  = 0x14;
 652   1               if(timer0_cn<2)
 653   1                 {timer0_cn++;}
 654   1               else
 655   1                 {
 656   2                 TR0=0;
 657   2                 rece_Len=0;
 658   2                 XJ=1;
 659   2                 command_ok=1; //一个消息接收完成!等待处理 
 660   2             }  
 661   1               }
 662          /*===========================*/
 663          /*======串口配置函数函数=====*/
 664          /*  bruad:波特率            */
 665          /*===========================*/
 666          void Serial(void)
 667              {
 668   1              SCON   = 0xDC;
 669   1          TMOD   = 0x21;
 670   1          TH1    = 0xFA;
 671   1          TL1    = 0xFA;
 672   1          PCON  &= 0x7F;
 673   1          TR1    = 1;
 674   1              }
C51 COMPILER V7.06   RXR_CS                                                                06/26/2006 22:51:01 PAGE 12  

 675          
 676          
 677          /*===========================*/
 678          /*========奇偶校验函数=======*/
 679          /*===========================*/
 680          void chenck_fun(uchar x)
 681                {
 682   1            ACC=x;
 683   1                if(P) {TB8=1;} //若P=1,说明有奇数个1,TB8置1
 684   1                else  {TB8=0;} 
 685   1            }
 686          /*=================================*/
 687          /*=========中断接收数据函数========*/
 688          /*=================================*/
 689          void com(void) interrupt 4 using 3
 690              {
 691   1          EA=0;
 692   1              if (RI)
 693   1             {
 694   2                 RI=0;TR0=0;
 695   2                 if(timer0_cn>1) //>1.5个字符停顿,刷新不完整消息   1x2ms
 696   2                        {
 697   3                        rece_Len=0;   //command_ok=0;
 698   3                        TH0=0xf8;TL0=0x14;timer0_cn=0;TR0=1;
 699   3                        }
 700   2                 recebuf[rece_Len]=SBUF;         //接收数据
 701   2                 recebuf_com[rece_Len]=recebuf[rece_Len];
 702   2                 rece_Len++;
 703   2                 command_Len=rece_Len;  //消息长度
 704   2             ACC=recebuf[rece_Len];
 705   2             /*以下进行奇偶校验*/
 706   2                 if(P)  //P=1时,说明接收到的数据为奇数个1,接收第9位RB8为1正确,否则错误!
 707   2                       {
 708   3                       if(RB8){js_check=1;}//偶校验正确
 709   3               else{js_check=2;}//偶校验错误!
 710   3                       }
 711   2                 else  //P=0时,说明接收到的数据为偶数个1,接收第9位RB8为0正确,否则错误!
 712   2                       {
 713   3                       if(!RB8){js_check=1;}//偶校验正确
 714   3               else{js_check=2;}//偶校验错误!
 715   3                       }
 716   2             rece_Len&=0x0f;
 717   2                 timer0_cn=0;TR0=1;//接收完数据,启动接收计时,检测是否停顿超过1.5个字符时间停顿!
 718   2                 }
 719   1          EA=1;
 720   1              }
 721          
 722          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1935    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   IDATA SIZE       =    105    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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