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

📄 netcom.lst

📁 移植到51单片机的UIP代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 273   2                              uip_ipaddr(ipaddr, ParaSet.TargetIP[0],ParaSet.TargetIP[1],ParaSet.TargetIP[2],ParaSet.TargetIP[3]);
 274   2                              tcp_conn=uip_connect(ipaddr, HTONS(ParaSet.TargetPort));
 275   2                              tcp_conn->lport = HTONS(ParaSet.LocalPort);
 276   2                              break;
 277   2                      default:
 278   2                              while(1);
 279   2              }
 280   1      }
 281          
 282          void Timer1_ISR( void ) interrupt 3 using 2
 283          {
 284   1              static u16 time=0;
 285   1              TH1 = T1_RELOAD >> 8;
 286   1          TL1 = T1_RELOAD;
 287   1              MS_TIMER++;
 288   1              if( ComBuf.RecvTime>0 )
 289   1                      ComBuf.RecvTime--;
 290   1              if( time++>1000 )
 291   1              {
 292   2                      time = 0;
 293   2                      if( Second>0 )
 294   2                              Second--;
 295   2                      if( SoftRstSec>0 )
 296   2                              SoftRstSec--;
 297   2              }
 298   1      }
 299          
 300          void Com_ISR( void ) interrupt 4 using 3
 301          {
 302   1              u8 temp;
 303   1              bit verfflag;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 6   

 304   1              if( RI )
 305   1              {
 306   2                      RI = 0;
 307   2                      temp = SBUF;
 308   2                      if( ParaSet.DataBit==9 )
 309   2                      {
 310   3                              ACC = temp;
 311   3                              switch( ParaSet.VerifyBit )
 312   3                              {
 313   4                                      case VERY_EVEN:
 314   4                                              if(RB8 == P)
 315   4                                                      verfflag = 1;
 316   4                                              else
 317   4                                                      verfflag = 0;
 318   4                                              break;
 319   4                                      case VERY_ODD:
 320   4                                              if(RB8 == ~P)
 321   4                                                      verfflag = 1;
 322   4                                              else
 323   4                                                      verfflag = 0;
 324   4                                              break;
 325   4                                      case VERY_LOW:
 326   4                                              if(RB8 == 0)
 327   4                                                      verfflag = 1;
 328   4                                              else
 329   4                                                      verfflag = 0;
 330   4                                              break;
 331   4                                      case VERY_HIGH:
 332   4                                              if(RB8 == 1)
 333   4                                                      verfflag = 1;
 334   4                                              else
 335   4                                                      verfflag = 0;
 336   4                                              break;
 337   4                                      default:
 338   4                                              break;
 339   4                              }
 340   3                      }
 341   2                      else
 342   2                              verfflag = 1;
 343   2      
 344   2                      if( ComBuf.RecvPtr<RECVBUF_LEN && verfflag )
 345   2                      {
 346   3                              ComBuf.RecvBuf[ComBuf.RecvPtr++] = temp;
 347   3                              ComBuf.RecvTime = ParaSet.FrameTime;
 348   3                              ComBuf.RstRecvFlag = 1;
 349   3                      }
 350   2              }
 351   1              if( TI )
 352   1              {
 353   2                      TI = 0;
 354   2                      if( ComBuf.SendPtr<ComBuf.SendLen && ComBuf.SendFlag )
 355   2                      {
 356   3                              temp = ComBuf.SendBuf[ComBuf.SendPtr++];
 357   3                              SBUF = temp;
 358   3                              ACC = temp;
 359   3                              if( ParaSet.DataBit==9 )
 360   3                              {
 361   4                                      switch( ParaSet.VerifyBit )
 362   4                                      {
 363   5                                              case VERY_EVEN:
 364   5                                                      TB8 = P;
 365   5                                                      break;
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 7   

 366   5                                              case VERY_ODD:
 367   5                                                      TB8 = ~P;
 368   5                                                      break;
 369   5                                              case VERY_LOW:
 370   5                                                      TB8 = 0;
 371   5                                                      break;
 372   5                                              case VERY_HIGH:
 373   5                                                      TB8 = 1;
 374   5                                                      break;
 375   5                                              default:
 376   5                                                      break;
 377   5                                      }
 378   4                                      ComBuf.SendPtr++;
 379   4                              }
 380   3                      }
 381   2                      else
 382   2                              ComBuf.SendFlag = 0;
 383   2              }
 384   1      }
 385          
 386          //return 0:error return 1:ok
 387          bit WriteSendBuf( u8 *ptr, u16 len )
 388          {
 389   1              u16 i;
 390   1              if( ComBuf.SendFlag )
 391   1                      return 0;
 392   1              if( len>SENDBUF_LEN )
 393   1                      len = SENDBUF_LEN;
 394   1      
 395   1              for( i=0; i<len; i++ )
 396   1              {
 397   2                      ComBuf.SendBuf[i] = ptr[i];
 398   2              }
 399   1              ComBuf.SendLen = len;
 400   1              ComBuf.SendPtr = 0;
 401   1              ComBuf.SendFlag = 1;
 402   1              TI = 1;
 403   1              return 1;
 404   1      }
 405          
 406          void uip_udp_appcall( void )
 407          {
 408   1              u16 crc;
 409   1              PARA_SET *ParasetPtr;
 410   1              if(uip_poll()) 
 411   1              {
 412   2          }   
 413   1              if( uip_udp_conns->lport == HTONS(2008) )
 414   1              {
 415   2                      if(uip_newdata()) //如果指定IP的指定端口发来数据
 416   2                      {
 417   3                              ParasetPtr = (PARA_SET*)uip_appdata;
 418   3                              crc = CalCRC( (u8*)uip_appdata, sizeof(PARA_SET)-2 );
 419   3                              if( crc==ParasetPtr->CrcVerify )
 420   3                              {
 421   4                                      sequential_write_flash_in_one_sector(0x8000,sizeof(PARA_SET),uip_appdata);
 422   4                                      memcpy(uip_appdata,"SUCCESS",7); 
 423   4                                      uip_send("SUCCESS",7);
 424   4                                      SoftResetFlag = 1;
 425   4                                      SoftRstSec = 5;
 426   4                              }
 427   3                              else if( *uip_appdata=='R' && *(uip_appdata+1)=='E' && *(uip_appdata+2)=='A' && *(uip_appdata+3)=='D' )
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 8   

 428   3                              {
 429   4                                      memcpy(uip_appdata,(u8*)&ParaSet,sizeof(PARA_SET)); 
 430   4                                      uip_send((u8*)uip_appdata,sizeof(PARA_SET));
 431   4                              }
 432   3                              else if( *uip_appdata=='R' && *(uip_appdata+1)=='E' && *(uip_appdata+2)=='S' && *(uip_appdata+3)=='E' &
             -& *(uip_appdata+4)=='T' && *(uip_appdata+5)=='?' )
 433   3                              {
 434   4                                      memcpy(uip_appdata,"RESETED",7); 
 435   4                                      uip_send((u8*)uip_appdata,7);
 436   4                              }
 437   3                      }
 438   2              }
 439   1      }
 440          
 441          void uip_appcall( void )
 442          {
 443   1              struct uip_conn *tcp_conn;
 444   1              u16_t ipaddr[2];//定义IP类型变量
 445   1      
 446   1              if( ParaSet.WorkMode==MODE_TCP_CLIENT )
 447   1              {       
 448   2                      switch( TcpStep )
 449   2                      {
 450   3                              case 0:
 451   3                                      if( uip_timedout() )
 452   3                                      {
 453   4                                              uip_close();
 454   4                                              uip_ipaddr(ipaddr, ParaSet.TargetIP[0],ParaSet.TargetIP[1],ParaSet.TargetIP[2],ParaSet.TargetIP[3]);
 455   4                                              tcp_conn=uip_connect(ipaddr, HTONS(ParaSet.TargetPort));
 456   4                                              tcp_conn->lport = HTONS(ParaSet.LocalPort);
 457   4                                              //WriteSendBuf("timeout",7);
 458   4                                      }
 459   3                                      if( uip_connected() )
 460   3                                      {
 461   4                                              TcpStep = 1;
 462   4                                              ReConnect = 0;
 463   4                                              //WriteSendBuf("success",7);
 464   4                                      }
 465   3                                      break;
 466   3                              case 1:
 467   3                                      if(uip_newdata() || uip_rexmit()) 
 468   3                                      {
 469   4                                              //uip_send("hello tcp client",16);
 470   4                                              if( uip_conn->lport == HTONS(ParaSet.LocalPort) )
 471   4                                              {
 472   5                                                      if( uip_len>SENDBUF_LEN )
 473   5                                                              uip_len = SENDBUF_LEN;
 474   5                                                      WriteSendBuf(uip_appdata, uip_datalen() );
 475   5                                              }
 476   4                                      }
 477   3                                      if( uip_closed() )
 478   3                                      {
 479   4                                              uip_close();
 480   4                                              TcpStep = 0;
 481   4                                              ReConnect = 1;
 482   4                                              Second = 5;
 483   4                                              //WriteSendBuf("closed",6);
 484   4                                              return;
 485   4                                      }
 486   3                                      if( uip_aborted() )
 487   3                                      {
 488   4                                              uip_abort();
C51 COMPILER V8.08   NETCOM                                                                05/13/2008 23:42:02 PAGE 9   

 489   4                                              TcpStep = 0;
 490   4                                              ReConnect = 1;
 491   4                                              Second = 5;
 492   4                                              //WriteSendBuf("aborted",7);
 493   4                                              return;
 494   4                                      }
 495   3                                      if( ComBuf.Com2NetFlag )
 496   3                                      {
 497   4                                              ComBuf.Com2NetFlag = 0;
 498   4                                              uip_send(ComBuf.RecvBuf, ComBuf.RecvLen );
 499   4                                      }
 500   3                                      break;
 501   3                              default:
 502   3                                      break;
 503   3                      }
 504   2              }
 505   1      }
 506          
 507          void ComTask( void )
 508          {
 509   1              if( ComBuf.RecvTime==0 && ComBuf.RstRecvFlag )
 510   1              {
 511   2                      ComBuf.RstRecvFlag = 0;
 512   2                      if( ComBuf.RecvPtr!=0 )
 513   2                      {
 514   3                              ComBuf.Com2NetFlag = 1;
 515   3                              ComBuf.RecvLen = ComBuf.RecvPtr;
 516   3                              ComBuf.RecvPtr = 0;
 517   3                      }
 518   2              }
 519   1              if( SoftResetFlag && SoftRstSec==0 )
 520   1                      SoftReset();
 521   1      }
 522          
 523          void TcpTask( void )
 524          {
 525   1              struct uip_conn *tcp_conn;
 526   1              u16_t ipaddr[2];//定义IP类型变量
 527   1      
 528   1              if( ReConnect && Second==0 )
 529   1              {
 530   2                      Second = 5;
 531   2                      uip_ipaddr(ipaddr, ParaSet.TargetIP[0],ParaSet.TargetIP[1],ParaSet.TargetIP[2],ParaSet.TargetIP[3]);
 532   2                      tcp_conn=uip_connect(ipaddr, HTONS(ParaSet.TargetPort));
 533   2                      tcp_conn->lport = HTONS(ParaSet.LocalPort);
 534   2                      //WriteSendBuf("reconnect ",10);
 535   2              }
 536   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2448    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   2977      33
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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