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

📄 auxio.lst

📁 The code is for Auxiliary IO module which supports 16 inputs and 16 outputs and Modbus protocol
💻 LST
📖 第 1 页 / 共 2 页
字号:
 350   2         case 3:
 351   2                fun_support=FN03_SUP;
 352   2                if(fun_support==1)
 353   2                  {
 354   3                      start_addr=ST_RD_03;
 355   3                              end_addr=EN_RD_03;
 356   3                          flg_read=1;                 
 357   3                      flg_analog=1;
 358   3                          flg_single=0;
 359   3                  }
 360   2                else
 361   2                  {
 362   3                      flg_wrongfn=1;
 363   3                  }
 364   2      
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 7   

 365   2         break;
 366   2      
 367   2         case 4:
 368   2                fun_support=FN04_SUP;
 369   2                if(fun_support==1)
 370   2                  {
 371   3                      start_addr=ST_RD_03;
 372   3                              end_addr=EN_RD_03;
 373   3                          flg_read=1;                 
 374   3                      flg_analog=1;
 375   3                          flg_single=0;
 376   3                  }
 377   2                else
 378   2                  {
 379   3                      flg_wrongfn=1;
 380   3                  }
 381   2         break;
 382   2         case 16:
 383   2                fun_support=FN16_SUP;
 384   2                if(fun_support==1)
 385   2                  {
 386   3                   start_addr=ST_WR_16;
 387   3                   end_addr=EN_WR_16;
 388   3                   flg_read=0;                 
 389   3                   flg_analog=1;
 390   3                   flg_single=0;
 391   3                  }
 392   2                else
 393   2                  {
 394   3                   flg_wrongfn=1;
 395   3                  }
 396   2         break;
 397   2         
 398   2         default:
 399   2                      flg_wrongfn=1;
 400   2         break;
 401   2      }  
 402   1      if(flg_wrongfn==0)
 403   1        {
 404   2         rec_addr=DBYTE[rx_buff+2];
 405   2         rec_addr=256*rec_addr;
 406   2         temp1=DBYTE[rx_buff+3];
 407   2         rec_addr=rec_addr+temp1;
 408   2      
 409   2         if(flg_single==1)
 410   2           {
 411   3            rec_length=1;
 412   3           }
 413   2         else
 414   2           {
 415   3            rec_length=DBYTE[rx_buff+4];
 416   3            rec_length=256*rec_length;
 417   3            rec_length=rec_length+DBYTE[rx_buff+5];
 418   3           }
 419   2      
 420   2         if((rec_addr>=start_addr) && ((rec_addr+rec_length)<end_addr))
 421   2           {
 422   3            addr_offset = rec_addr - start_addr;
 423   3            valid_ok=1;
 424   3           }
 425   2         else
 426   2           {
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 8   

 427   3            exc_code=2;  
 428   3           }  
 429   2         }
 430   1      else
 431   1        {
 432   2         exc_code=1;
 433   2        }
 434   1      if(valid_ok==0)
 435   1        {
 436   2         result=65535;
 437   2         mod_txcnt=0;
 438   2      
 439   2         DBYTE[tx_buff]=mod1_devid;
 440   2         cal_crc(mod1_devid);
 441   2         mod_txcnt++;
 442   2      
 443   2         temp1=mod_fn+0x80;
 444   2         DBYTE[tx_buff+1]=temp1;
 445   2         cal_crc(temp1);
 446   2         mod_txcnt++;
 447   2         
 448   2         DBYTE[tx_buff+2]=exc_code;
 449   2         cal_crc(exc_code);
 450   2         mod_txcnt++;
 451   2      
 452   2         crch=result & 0x00FF;
 453   2         result=result & 0xFF00;
 454   2         crcl=result>>8;
 455   2         
 456   2         DBYTE[tx_buff+3]=crch;
 457   2         mod_txcnt++;
 458   2      
 459   2         DBYTE[tx_buff+4]=crcl;
 460   2         mod_txcnt++;
 461   2      
 462   2        }
 463   1      }
 464          
 465          void read_response(unsigned char rx_buff,unsigned char tx_buff,unsigned char data_buff)
 466          {
 467   1       switch(mod_fn)
 468   1         {
 469   2          case 3:
 470   2                 read3_4(rx_buff,tx_buff,data_buff);
 471   2          break;
 472   2       
 473   2          case 4:
 474   2                 read3_4(rx_buff,tx_buff,data_buff);
 475   2          break;
 476   2      
 477   2          default:
 478   2      
 479   2          break;
 480   2         }
 481   1      }
 482          
 483          void com1_txmode(void)
 484          {
 485   1              DIR=1;
 486   1              
 487   1      }
 488          
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 9   

 489          void com1_tx(void)
 490          {
 491   1      SBUF=com1_txchar;
 492   1      //P1_5=1;
 493   1      }
 494          
 495          void com1_rxmode(void)
 496          {
 497   1              DIR=0;
 498   1      
 499   1      }
 500          
 501          void cal_crc(unsigned char ch)
 502          {
 503   1      idata unsigned char i;
 504   1       result=result^ch;
 505   1       for (i=0;i<8;i++)
 506   1              {
 507   2               flag=result & 1;
 508   2               result=result>>1;
 509   2               if (flag==1)
 510   2                      {
 511   3                        result=result^poly;
 512   3                      }
 513   2              }
 514   1      }
 515          
 516          void read3_4(unsigned char rx_buff,unsigned char tx_buff,unsigned char data_buff)
 517          {
 518   1      unsigned char temp1,temp2;
 519   1      Input();                //update data
 520   1      result=65535;
 521   1      //mod_destaddr=MOD_TXBUFF;
 522   1      mod_destaddr=tx_buff;
 523   1      mod_txcnt=0;
 524   1      
 525   1      DBYTE[mod_destaddr]=mod1_devid;
 526   1      cal_crc(mod1_devid);
 527   1      mod_txcnt++;
 528   1      mod_destaddr++;
 529   1      
 530   1      DBYTE[mod_destaddr]=mod_fn;
 531   1      cal_crc(mod_fn);
 532   1      mod_txcnt++;
 533   1      mod_destaddr++;
 534   1      
 535   1      mod_txlen=rec_length*2;
 536   1      DBYTE[mod_destaddr]=mod_txlen;
 537   1      cal_crc(mod_txlen);
 538   1      mod_txcnt++;
 539   1      mod_destaddr++;
 540   1      
 541   1      //mod_srcaddr=MOD_DATABUFF;
 542   1      mod_srcaddr=data_buff;
 543   1      mod_srcaddr=mod_srcaddr+(addr_offset*2);
 544   1      for(temp1=0;temp1<mod_txlen;temp1++)
 545   1         {
 546   2          temp2=DBYTE[mod_srcaddr];
 547   2          mod_srcaddr++;
 548   2          DBYTE[mod_destaddr]=temp2;
 549   2          cal_crc(temp2);
 550   2          mod_txcnt++;
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 10  

 551   2          mod_destaddr++;
 552   2         }
 553   1      
 554   1      crch=result & 0x00FF;
 555   1      result=result & 0xFF00;
 556   1      crcl=result>>8;
 557   1      
 558   1      
 559   1      DBYTE[mod_destaddr]=crch;
 560   1      mod_txcnt++;
 561   1      mod_destaddr++;
 562   1         
 563   1      DBYTE[mod_destaddr]=crcl;
 564   1      mod_txcnt++;
 565   1      mod_destaddr++;
 566   1      }
*** WARNING C280 IN LINE 516 OF AUXIO.C: 'rx_buff': unreferenced local variable
 567          
 568          void store_data(unsigned char rx_buff,unsigned char tx_buff,unsigned char data_buff)
 569          {
 570   1       switch(mod_fn)
 571   1         {
 572   2      
 573   2          case 16:
 574   2               //clear error flag                                                                                                                                                                                                              
 575   2                              ndata = 1;
 576   2                  store16(rx_buff,tx_buff,data_buff);
 577   2          break;
 578   2                      
 579   2          default:
 580   2          break;      
 581   2          
 582   2         }
 583   1      
 584   1      }
 585          
 586          void store16(unsigned char rx_buff,unsigned char tx_buff,unsigned char data_buff)
 587          {
 588   1      unsigned char temp1,temp2;
 589   1      mod_srcaddr=rx_buff+6;
 590   1      rx_dbcnt=DBYTE[mod_srcaddr];//count
 591   1      mod_srcaddr++;
 592   1      
 593   1      mod_destaddr=data_buff;//data buf
 594   1      //mod_destaddr=mod_destaddr+(addr_offset*2);
 595   1      
 596   1      for(temp1=0; temp1<rx_dbcnt; temp1++)
 597   1        {
 598   2         temp2=DBYTE[mod_srcaddr];
 599   2         mod_srcaddr++;
 600   2         DBYTE[mod_destaddr]=temp2;
 601   2         mod_destaddr++;
 602   2        }
 603   1      }
*** WARNING C280 IN LINE 586 OF AUXIO.C: 'tx_buff': unreferenced local variable
 604          
 605          void write_response(unsigned char rx_buff,unsigned char tx_buff)
 606          {
 607   1      unsigned char temp1;
 608   1      result=65535;
 609   1      mod_destaddr=tx_buff;
 610   1      mod_srcaddr=rx_buff;
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 11  

 611   1      
 612   1      mod_txcnt=0;
 613   1      
 614   1      DBYTE[mod_destaddr]=mod1_devid;
 615   1      cal_crc(mod1_devid);
 616   1      mod_txcnt++;
 617   1      mod_destaddr++;
 618   1      
 619   1      DBYTE[mod_destaddr]=mod_fn;
 620   1      cal_crc(mod_fn);
 621   1      mod_txcnt++;
 622   1      mod_destaddr++;
 623   1      
 624   1      temp1=DBYTE[mod_srcaddr+2];
 625   1      DBYTE[mod_destaddr]=temp1;
 626   1      cal_crc(temp1);
 627   1      mod_txcnt++;
 628   1      mod_destaddr++;
 629   1      
 630   1      temp1=DBYTE[mod_srcaddr+3];
 631   1      DBYTE[mod_destaddr]=temp1;
 632   1      cal_crc(temp1);
 633   1      mod_txcnt++;
 634   1      mod_destaddr++;
 635   1      
 636   1      temp1=DBYTE[mod_srcaddr+4];
 637   1      DBYTE[mod_destaddr]=temp1;
 638   1      cal_crc(temp1);
 639   1      mod_txcnt++;
 640   1      mod_destaddr++;
 641   1      
 642   1      temp1=DBYTE[mod_srcaddr+5];
 643   1      DBYTE[mod_destaddr]=temp1;
 644   1      cal_crc(temp1);
 645   1      mod_txcnt++;
 646   1      mod_destaddr++;
 647   1      
 648   1      crch=result & 0x00FF;
 649   1      result=result & 0xFF00;
 650   1      crcl=result>>8;
 651   1      
 652   1      
 653   1      DBYTE[mod_destaddr]=crch;
 654   1      mod_txcnt++;
 655   1      mod_destaddr++;
 656   1         
 657   1      DBYTE[mod_destaddr]=crcl;
 658   1      mod_txcnt++;
 659   1      mod_destaddr++;
 660   1      
 661   1      }
 662          
 663          void dly(unsigned int delay)
 664          {
 665   1      unsigned int dlycnt;
 666   1      for(dlycnt=0;dlycnt<=delay;dlycnt++)
 667   1              {
 668   2                      dummy=0;
 669   2              }
 670   1      
 671   1      }
 672          
C51 COMPILER V6.21  AUXIO                                                                  03/25/2008 15:43:14 PAGE 12  

 673          void Output(unsigned char out)
 674          {
 675   1        LEN = 1;
 676   1        dly(5);
 677   1        P0 = regbuff[2];
 678   1        LEN = 0;
 679   1      }
*** WARNING C280 IN LINE 673 OF AUXIO.C: 'out': unreferenced local variable
 680          
 681          void Input(void)
 682          {
 683   1        BEN = 0;
 684   1        dly(5);
 685   1        regbuff[0] = P0;
 686   1        BEN = 1;
 687   1      
 688   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1310    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      11
   IDATA SIZE       =     62       2
   BIT SIZE         =     15    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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