📄 netcom.lst
字号:
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 + -