📄 main.lst
字号:
486 4 else if (c == ETX)
487 4 {
488 5 if (DataDleReceived) //如果是结束标记 处理
489 5 {
490 6 DataDleReceived = FALSE;
491 6 bcc = 0;
492 6 for (i = 0; i < Index; i++)
493 6 {
494 7 bcc ^= SerBuffer[i];
495 7 };
496 6
497 6 if( bcc == 0)
498 6 {
499 7 En485 = SEND;
500 7 //Ir_En = SEND;
501 7 Cmdok = TRUE;
502 7 SBUF = DLE ;
503 7 while( !TI );
504 7 TI = FALSE;
505 7 En485 = RECV;
506 7 //Ir_En = RECV;
507 7 }
508 6 else
509 6 {
510 7 En485 = SEND;
511 7 //Ir_En = SEND;
512 7 Cmdok = FALSE;
513 7 SBUF = NAK ;
514 7 while( !TI );
515 7 TI = FALSE;
516 7 En485 = RECV;
517 7 //Ir_En = RECV;
518 7 };
519 6 break;
520 6 }
521 5 else
522 5 {
523 6 DataDleReceived = FALSE; //如果不是结束标记 留下
524 6 };
525 5 };
526 4
527 4 if (Index < SERBUFLEN) //将数据写入SerBuffer[]
528 4 {
529 5 SerBuffer[Index++] = c;
530 5 };
531 4 RecvState = RECV_DATA_DLE_ETX;
532 4 START_T0(T_533_ms);
533 4 break;
534 4
535 4 case RECV_DLE: //Recieve answer from HOST
536 4 if ( c == DLE)
537 4 {
538 5 En485 = SEND;
539 5
540 5 //Ir_En = SEND;
541 5 //Delay50us(2);
542 5 for (i = 0; i < (3 + SerBuffer[2] +1); i++) //send data
543 5 {
544 6 SBUF = SerBuffer[i];
545 6 while (!TI);
546 6 TI = FALSE;
547 6 if ( SerBuffer[i] == DLE ) //send DLE two
C51 COMPILER V7.05 MAIN 12/20/2004 15:31:04 PAGE 10
548 6 {
549 7 SBUF = DLE;
550 7 while (!TI);
551 7 TI = FALSE;
552 7 };
553 6 };
554 5
555 5
556 5 SBUF = DLE; //send END
557 5 while (!TI);
558 5 TI = FALSE;
559 5
560 5 SBUF = ETX;
561 5 while (!TI);
562 5 TI = FALSE;
563 5 RecvState = RECV_DLE_OR_NAK ;
564 5 START_T0(T_533_ms);
565 5 En485 = RECV;
566 5 //Ir_En = RECV;
567 5 }
568 4 else
569 4 {
570 5 CALL_isr_T0() ;
571 5 };
572 4 break;
573 4
574 4 case RECV_DLE_OR_NAK: //Recieve answer from HOST
575 4 if ( c == DLE)
576 4 {
577 5 SendOk = TRUE;
578 5 SendReady = FALSE;
579 5 RecvReady = TRUE;
580 5 RecvState = RECV_STX;
581 5 }
582 4 else
583 4 {
584 5 SendOk = FALSE;
585 5 SendReady = TRUE;
586 5 RecvReady = FALSE;
587 5 CALL_isr_T0() ;
588 5 };
589 4 En485 = RECV;
590 4 //Ir_En = RECV;
591 4 break;
592 4 default:
593 4 CALL_isr_T0() ;
594 4 break;
595 4
596 4 };//end of case
597 3 };//end of if(RecvReady)
598 2 };//end of if(RI)
599 1
600 1
601 1 if ( TI && !RI )
602 1 {
603 2 TI = 0 ;
604 2 if ( SendReady )
605 2 {
606 3 SendReady = FALSE ;
607 3
608 3 bcc = SerBuffer[0]; //计算BCC
609 3 for ( i = 1 ; i < SerBuffer[2]+3 ; i++ )
C51 COMPILER V7.05 MAIN 12/20/2004 15:31:04 PAGE 11
610 3 {
611 4 bcc = bcc ^ SerBuffer[i] ;
612 4
613 4 };
614 3 SerBuffer[SerBuffer[2]+3] = bcc;
615 3
616 3 En485 = SEND;
617 3 //Ir_En = SEND;
618 3 //Delay50us(2);
619 3 SBUF = STX ; //发送起始位}
620 3 RecvReady = TRUE ;
621 3 RecvState = RECV_DLE ; //准备接收应答
622 3 // GREEN_LED = ~GREEN_LED;
623 3 while(!TI) ;
624 3 TI = FALSE ;
625 3 En485 = RECV;
626 3 //Ir_En = RECV;
627 3 START_T0(T_533_ms) ; //chao shi
628 3 };
629 2 };
630 1
631 1 }
632 //****************************************************************************
633 void SetPosNum(unsigned char xdata *dat)
634 {
635 1 //ByteWrite_Check (124,dat[0]);
636 1 Wr1307(20,dat[0]);
637 1 ADDR=dat[0];
638 1 num_suss=1;
639 1 }
640 /****************************************************************************
641 * cmd_execution(); *
642 * Function: *
643 * *
644 * Input: *
645 * Output: - *
646 * *
647 * Description: *
648 ****************************************************************************/
649 void cmd_execution(void)
650 { unsigned char len ,i;//, adr ;
651 1 //unsigned int e;
652 1 //unsigned char idata size , tt[2];
653 1
654 1 //WatchDog();
655 1 len = SerBuffer[2] ;
656 1 SerBuffer[2] = 0 ;
657 1 link=1;
658 1 switch ( SerBuffer[1] )
659 1 {
660 2 case 0x80: //Write time
661 2 SetTime(&SerBuffer[3]);
662 2 time_set=1;
663 2 SerBuffer[1] = 0;
664 2 SerBuffer[2] = 0;
665 2 break;
666 2 case 0x81: //green LED
667 2 //if ( SerBuffer[3] == 1) {LED_GREEN = 1;}
668 2 // else if( SerBuffer[3] == 0) { LED_GREEN = 0;};
669 2 //lage_car=((int)SerBuffer[3])*256+SerBuffer[4];
670 2 ///if(lage_car>999)lage_car=999;
671 2 //small_car=((int)SerBuffer[5])*256+SerBuffer[6];
C51 COMPILER V7.05 MAIN 12/20/2004 15:31:04 PAGE 12
672 2 //if(small_car>999)small_car=999;
673 2 for(i=0;i<10;i++)
674 2 {
675 3 ledtem[i]= SerBuffer[3+i];
676 3 }
677 2 SerBuffer[1] = 0;
678 2 SerBuffer[2] = 0;
679 2 break;
680 2
681 2 case 0x82: //red RED
682 2 // if ( SerBuffer[3] == 1) {LED_RED = 1;}
683 2 // else if( SerBuffer[3] == 0) { LED_RED = 0;};
684 2
685 2 SerBuffer[1] = 0;
686 2 SerBuffer[2] = 0;
687 2 break;
688 2
689 2
690 2 case 0x83: //Transfer Record
691 2 // recordint.chrX[1]=SerBuffer[4];
692 2 // recordint.chrX[0]=SerBuffer[5];
693 2
694 2 // Status = TransferRecord(SerBuffer[3],recordint.intX);
695 2 if(Keyinput_ok)
696 2 {
697 3 Keyinput_ok=0;
698 3 for(i=0;i<5;i++)
699 3 SerBuffer[3+i]= input_pc[i];
700 3 if( in_outFlg )
701 3 {
702 4 SerBuffer[8]=0x88;//进入标志
703 4 }
704 3 else
705 3 {
706 4 SerBuffer[8]=0x99;
707 4 }
708 3 memcpy(&SerBuffer[9],psnr,4);//卡号
709 3
710 3
711 3 mainstate=0; //数据取走
712 3 }
713 2 else
714 2 {
715 3 for(i=0;i<10;i++)
716 3 SerBuffer[3+i]=0;
717 3 if(ban)
718 3 {
719 4 ban=0;
720 4 if(keyin==1)
721 4 {
722 5 SerBuffer[8]=0xaa;
723 5 }
724 4 if(keyin==2)
725 4 {
726 5 SerBuffer[8]=0xcc;
727 5 }
728 4 memcpy(&SerBuffer[9],psnr,4);//卡号
729 4 }
730 3 if(sta)
731 3 {
732 4 SerBuffer[8]=0xbb;
733 4 sta=0;
C51 COMPILER V7.05 MAIN 12/20/2004 15:31:04 PAGE 13
734 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -