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

📄 slave.lst

📁 这是一个单片机的项目
💻 LST
📖 第 1 页 / 共 4 页
字号:
             -**/
 609          void SetBodeRate(uchar boderate)
 610          {
 611   1         switch(boderate)
 612   1         {
 613   2              case 0x01:            //2400
 614   2                    TH1=0xE6;
 615   2                        break;      
 616   2              case 0x02:            //4800
 617   2                    TH1=0xF3;
 618   2                        break;     
 619   2              case 0x03:            //9600
 620   2                    TH1=0xF9;
 621   2                        break;          
 622   2            default:
 623   2                        break;
 624   2          }
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 12  

 625   1      
 626   1           TR1=1;//定时器1开
 627   1      }
 628          
 629          /*********************************************************************************************************
             -**
 630          功能:Send7017Order,发送7017外设数据采集命令。
 631          描述:通过外设号给7017类型的外设发送采集数据的命令。
 632          参数:wsaddress---外设编号
 633          返回:无
 634          **********************************************************************************************************
             -**/
 635          void  Send7017Order(uchar wsaddress)
 636          {
 637   1         switch(wsaddress)
 638   1         {
 639   2                         case 01: //外设1
 640   2                         {
 641   3                                      SendBuff[0]=0x23;  SendBuff[1]=0x30;   SendBuff[2]=0x31;  SendBuff[3]=0x0D;  //#01
 642   3                              }   
 643   2                              break;
 644   2                                      
 645   2                              case 02: //外设2
 646   2                              {
 647   3                                      SendBuff[0]=0x23;  SendBuff[1]=0x30;   SendBuff[2]=0x32;  SendBuff[3]=0x0D;  //#02
 648   3                              }   
 649   2                              break;
 650   2                                      
 651   2                              case 03: //外设3
 652   2                              {
 653   3                                      SendBuff[0]=0x23;  SendBuff[1]=0x30;  SendBuff[2]=0x33;  SendBuff[3]=0x0D;  //#03
 654   3                              }   
 655   2                              break;
 656   2                                      
 657   2                          case 04: //外设4
 658   2                              {
 659   3                                      SendBuff[0]=0x23;  SendBuff[1]=0x30;  SendBuff[2]=0x34;  SendBuff[3]=0x0D;  //#04
 660   3                              }   
 661   2                              break;
 662   2                                      
 663   2                          case 05: //外设5
 664   2                              {
 665   3                                      SendBuff[0]=0x23;  SendBuff[1]=0x30;  SendBuff[2]=0x35;  SendBuff[3]=0x0D;  //#05
 666   3                              }   
 667   2                              break;
 668   2      
 669   2                              default:
 670   2                                break;
 671   2                                      
 672   2              }
 673   1              SendStringCom(SendBuff,4);
 674   1      }
 675          
 676          /*********************************************************************************************************
             -**
 677          功能:Send7053Order,发送7053外设数据采集命令。
 678          描述:通过外设号给7053类型的外设发送采集数据的命令。
 679          参数:wsaddress---外设编号
 680          返回:无
 681          **********************************************************************************************************
             -**/
 682          void  Send7053Order(uchar wsaddress)
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 13  

 683          {
 684   1          switch(wsaddress)
 685   1              {
 686   2                              case 01: //外设1
 687   2                              {
 688   3                                      SendBuff[0]=0x40;  SendBuff[1]=0x30;  SendBuff[2]=0x31;  SendBuff[3]=0x0D;  //@01
 689   3                              }                
 690   2                              break;
 691   2                                      
 692   2                              case 02: //外设2
 693   2                              {
 694   3                                      SendBuff[0]=0x40;  SendBuff[1]=0x30;  SendBuff[2]=0x32;  SendBuff[3]=0x0D;  //@02
 695   3                              }
 696   2                              break;
 697   2                                      
 698   2                              case 03: //外设3
 699   2                              {
 700   3                                      SendBuff[0]=0x40;  SendBuff[1]=0x30;  SendBuff[2]=0x33;  SendBuff[3]=0x0D;  //@03
 701   3                              }
 702   2                              break;
 703   2                                      
 704   2                              case 04: //外设4
 705   2                              {
 706   3                                      SendBuff[0]=0x40;  SendBuff[1]=0x30;  SendBuff[2]=0x34;  SendBuff[3]=0x0D;  //@04
 707   3                              }
 708   2                              break;
 709   2                                      
 710   2                              case 05: //外设5
 711   2                              {
 712   3                                      SendBuff[0]=0x40;  SendBuff[1]=0x30;  SendBuff[2]=0x35;  SendBuff[3]=0x0D;  //@05
 713   3                              }
 714   2                              break;
 715   2                                      
 716   2                              default:
 717   2                                break;
 718   2              }
 719   1              SendStringCom(SendBuff,4);
 720   1      }
 721          
 722          /*********************************************************************************************************
             -**
 723          功能:WsSerialRecieve,接收外设发送来的数据。
 724          描述:通过串口中断接收外设发送过来的数据,保存在RecvDataBuff数组里,数据接收完毕时通过标识FlagProcessRecvDa
             -ta
 725               通知Process7017RecvData或者Process7053RecvData函数来打包接收的数据。
 726          参数:无
 727          返回:无
 728          **********************************************************************************************************
             -**/
 729          void WsSerialRecieve() interrupt 4 using 3    
 730          { 
 731   1         if(RI) 
 732   1         {  
 733   2           uchar ch;
 734   2               RI = 0; 
 735   2           ch = SBUF; 
 736   2           if(ch==0x3E)                   //若第一个字符为数据开始字符">"。
 737   2           { 
 738   3                 FlagStartRecv=1;             //开始接收标志置位。
 739   3                 RecvDataCount = -1;          //第一个字符不接收。
 740   3               }
 741   2      
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 14  

 742   2           if(FlagStartRecv)              //若可以开始接收
 743   2               {         
 744   3                 if(RecvDataCount >=0)        //若接收的个数大于0,验证接收个数的有效性。
 745   3                 {
 746   4                   RecvDataBuff[RecvDataCount]=ch;    //保存接收的数据
 747   4                 }
 748   3                 RecvDataCount++;                     //接收的个数加一
 749   3                 if(RecvDataCount > (RecvDataSize-1)) //如果接收的数据已经接收完毕
 750   3             {
 751   4                         FlagProcessRecvData=1;           //FlagProcessRecvData置位,通知函数来打包该数据。              
 752   4                 FlagStartRecv=0;                 //开始接收标识复位,暂时不接受外设数据。
 753   4                 RecvDataCount=-1;                //接收个数也复位为-1.
 754   4                 }
 755   3                }
 756   2          }
 757   1      }
 758          
 759          /*********************************************************************************************************
             -**
 760          功能:Process7017RecvData,打包7017的外设数据。
 761          描述:当外设为7017,且FlagProcessRecvData==1时,调用该函数来打包外设7017的数据,并且保存在相应的存储器中。
 762          参数:wsaddress---外设编号
 763          返回:无
 764          **********************************************************************************************************
             -*/
 765          void Process7017RecvData(uchar wsaddress)
 766          {
 767   1          uchar j=0,len=0;           //通道值
 768   1              uchar Output = 0;          //保存输出动作号。
 769   1              uchar TempH,TempL;     //TempH---用来保存整数,TempL---用来保存小数     
 770   1              uint Max,Min;   
 771   1              uint length;
 772   1              uint Temp1;
 773   1              uint address1;     //原来的外设的最大最小等信息的存储地址
 774   1              uint address2;     //从机的数据存储地址 ; 
 775   1              uint address3;     //报警值存储地址。
 776   1              xdata uchar TempBuff[WsChannelParaLen];
 777   1              xdata uchar TiJiaoDataBuff[7];
 778   1              for(j = Channel1 ;j <= Channel8;j++)
 779   1              {
 780   2                  TempH=(RecvDataBuff[j*7+1]-0x30)*10+(RecvDataBuff[j*7+2]-0x30);//取出2为整数,并且转化为数值。
 781   2                      if(RecvDataBuff[j*7] == 0x2D)//判断数据的符号,若为负。
 782   2                      TempH=TempH|0x80;      //将最高位置1,标识该值为负。
 783   2      
 784   2                      TempL=(RecvDataBuff[j*7+4]-0x30)*10+(RecvDataBuff[j*7+5]-0x30);  //除掉小数点,取出2位小数位(有3位)。
 785   2      
 786   2              address1=Ws1channel1 +(wsaddress-1)* 0x100+ j * 0x10;
 787   2      
 788   2                      MyReadBytes(address1,TempBuff,WsChannelParaLen);//读原来的最大,最小值等信息
 789   2      
 790   2              //通道j的参数    最大值整数,最大值小数,最小值整数,最小值小数,超高报警高,超高报警低,超低报警高,超低
             -报警低,使能,超低报警动作号,超低报警动作号。
 791   2                      //  TempBuff[i]       0         1          2          3           4          5          6          7    
             -   8         9               10
 792   2                      if(1/*TempBuff[8]*/) //使能位为1,提交数据包
 793   2                      {
 794   3                              TiJiaoDataBuff[0]=StartFlag;     //包开始标识
 795   3                  TiJiaoDataBuff[1]=CmdSendSlave;  //包标志
 796   3                  TiJiaoDataBuff[2]=SlaveCode;     //从机编号
 797   3                  TiJiaoDataBuff[3]=wsaddress;     //外设编号
 798   3                  TiJiaoDataBuff[4]=j;             //通道编号
 799   3                  TiJiaoDataBuff[5]=TempH;         //整数数值
C51 COMPILER V7.50   SLAVE                                                                 03/17/2008 11:04:03 PAGE 15  

 800   3                  TiJiaoDataBuff[6]=TempL;         //小数数值
 801   3      
 802   3                  length=GetMyDataBytes(MyDataLenAdd); //取出当前已保存的数据长度,用来计算下一次的保存地址。
 803   3                          if((length +7) > DataLen7017)
 804   3                              {
 805   4                                 address2 = MyDataStart;
 806   4                                 MyWriteBytes(address2,TiJiaoDataBuff,LenCmdSendSlave);     //以数据包的形式存储到存储器。
 807   4                                 MyWriteOneByte(MyDataLenAdd,(DataLen7017%256));           //设置新的数据长度。
 808   4                                 MyWriteOneByte(MyDataLenAdd+1,(DataLen7017/256));         //设置新的数据长度。
 809   4                              }
 810   3                              else
 811   3                              {
 812   4                                 address2 = MyDataStart + length;       //计算保存的地址。
 813   4                     MyWriteBytes(address2,TiJiaoDataBuff,LenCmdSendSlave); //以数据包的形式存储到存储器。
 814   4                     SetMyDataBytes(MyDataLenAdd,LenCmdSendSlave);         //设置新的数据长度。
 815   4                              }
 816   3                  
 817   3                  //通道j参数   最大值整数,最大值小数,最小值整数,最小值小数,超高报警高,超高报警低,超低报警高,超

⌨️ 快捷键说明

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