📄 mmm.lst
字号:
522 3 --Timer0Cnt;
523 3 }
524 2 else
525 2 {
526 3 TR0 = 0 ;
527 3 if ((RecvState == RECV_DLE) || (RecvState == RECV_DLE_OR_NAK)) //发送起始字超时
528 3 {
529 4 ErrorCount++;
530 4 if ( ErrorCount <= 1)
531 4 {
532 5 SendReady = TRUE;
533 5 TI = 1;
534 5 }
535 4 else
536 4 {
537 5 ErrorCount = 0 ;
538 5 SendReady = FALSE;
539 5 RecvReady = TRUE;
540 5 RecvState = RECV_STX;
541 5 En485 = RECV;
542 5 //Ir_En = RECV;
543 5
544 5 }
545 4 }
546 3 else //接收超时
547 3 {
C51 COMPILER V7.05 MMM 07/08/2005 11:42:13 PAGE 10
548 4 SendReady = FALSE;
549 4 RecvReady = TRUE;
550 4 RecvState = RECV_STX;
551 4 En485 = RECV;
552 4
553 4 };
554 3 };
555 2 }
556 1
557 1 TR0=1;
558 1 TH0=0X90;
559 1 TL0=0X95;
560 1 //TR0=1;
561 1 }
562 //**************************************************************
563 unsigned char Find(unsigned char addr,bit call)
564 {
565 1 unsigned char data i=0,j;
566 1 unsigned int data crc;
567 1 TX_EN=1;
568 1 Delay1ms(2);
569 1 // Test_led=!Test_led;
570 1 RXtem[0]=0X55;
571 1 RXtem[1]=0XAA;
572 1 RXtem[2]=addr;
573 1 if(call) //有传呼信息
574 1 {
575 2 RXtem[3]=0x33;
576 2 // PutChar1(0x33);
577 2 }
578 1 else
579 1 {
580 2 RXtem[3]=0x44;
581 2 // PutChar1(0x44);
582 2 }
583 1 crc=cal_crc(RXtem, 4);
584 1 RXtem[4]=crc>>8;
585 1 RXtem[5]=(unsigned char)crc;
586 1 for(j=0;j<3;j++)
587 1 {
588 2 for(i=0;i<6;i++)
589 2 {
590 3 PutChar1( RXtem[i]);
591 3 }
592 2 }
593 1 TX_EN=0;
594 1 Comm_On();
595 1 Delay1ms(1);
596 1 rxok=0; //add
597 1 /*while(!rxok)
598 1 {
599 1 Delay1ms(1);
600 1 i++;
601 1 if(i>15)break;
602 1 }*/
603 1 Delay1ms(22);
604 1 Comm_Off();
605 1 TX_EN=1;
606 1 if(rxok)
607 1 {
608 2 rxok=0;
609 2 if(ring_flg==2)Waring=1;
C51 COMPILER V7.05 MMM 07/08/2005 11:42:13 PAGE 11
610 2 return(ring_flg);
611 2 }
612 1 else
613 1 {
614 2 return 0;// return 0;
615 2 }
616 1
617 1 }
618
619 /****************************************************************************
620 * *
621 * Function: TransferRecord *
622 * *
623 * Input: - uchar 1 *
624 * Output: - 0 *
625 * *
626 * Description: *
627 ****************************************************************************
628 TransferRecord(unsigned char Day , unsigned int i)
629 {
630 Day=0;
631 SerBuffer[3] = RemainRec[i][0];//.Flg ;
632
633 SerBuffer[4] = RemainRec[i][1];//ParkingRecord[i].CardID.chrX[3] ;
634 SerBuffer[5] =RemainRec[i][2];//ParkingRecord[i].CardID.chrX[2] ;
635 SerBuffer[6] =RemainRec[i][3];//ParkingRecord[i].CardID.chrX[1] ;
636 SerBuffer[7] =RemainRec[i][4];//ParkingRecord[i].CardID.chrX[0] ;
637
638 SerBuffer[8] = RemainRec[i][5];// ParkingRecord[i].BeginTime.hour ;
639 SerBuffer[9] =RemainRec[i][6];// ParkingRecord[i].BeginTime.minute ;
640 SerBuffer[10]= RemainRec[i][7];// ParkingRecord[i].BeginTime.second ;
641
642 SerBuffer[11] =RemainRec[i][8]; // ParkingRecord[i].BeginTime.century ;
643 SerBuffer[12] =RemainRec[i][9];// ParkingRecord[i].BeginTime.year ;
644 SerBuffer[13] =RemainRec[i][10];// ParkingRecord[i].BeginTime.month ;
645 SerBuffer[14] =RemainRec[i][11];// ParkingRecord[i].BeginTime.day ;
646 SerBuffer[15] =RemainRec[i][12];
647 SerBuffer[16] =RemainRec[i][13];
648 SerBuffer[17] =RemainRec[i][14];
649 SerBuffer[18] =RemainRec[i][15];
650 //SerBuffer[14] =RemainRec[i][16];
651 }*/
652 //*************************************************************************
653 void SetPosNum(unsigned char xdata *dat)
654 {
655 1 //ByteWrite_Check (124,dat[0]);
656 1 ByteWrite_Check(20,dat[0]);
657 1 ADDR=dat[0];
658 1
659 1 }
660 /****************************************************************************
661 * cmd_execution(); *
662 * Function: *
663 * *
664 * Input: *
665 * Output: - *
666 * *
667 * Description: *
668 ****************************************************************************/
669 void cmd_execution(void)
670 { unsigned char len,lensend=0 ; //Status ;//, adr ;
671 1 //unsigned int e;
C51 COMPILER V7.05 MMM 07/08/2005 11:42:13 PAGE 12
672 1 //unsigned char idata size , tt[2];
673 1 unsigned char i;
674 1 //WatchDog();
675 1 len = SerBuffer[2] ;
676 1 SerBuffer[2] = 0 ;
677 1
678 1 switch ( SerBuffer[1] )
679 1 {
680 2 case 0x80: //Write time
681 2
682 2 SerBuffer[1] = 0;
683 2 SerBuffer[2] =1 ;
684 2 SerBuffer[3]= Numptr*2;
685 2
686 2 break;
687 2 case 0x81: //green LED
688 2
689 2
690 2 SerBuffer[1] = 0;
691 2 SerBuffer[2] = 0;
692 2 break;
693 2
694 2 case 0x82: //red RED
695 2 if ( SerBuffer[3] == 1) {LED_RED = 1;}
696 2 else if( SerBuffer[3] == 0) { LED_RED = 0;};
697 2
698 2 SerBuffer[1] = 0;
699 2 SerBuffer[2] = 0;
700 2 break;
701 2
702 2
703 2 case 0x83: //Transfer Record
704 2 // Status = TransferRecord(SerBuffer[3],SerBuffer[4]);
705 2 // SerBuffer[1] = Status;
706 2 lensend= Numptr*2;
707 2 SerBuffer[1] =0;
708 2 SerBuffer[2] =lensend+4;
709 2 memcpy(&SerBuffer[3], RemainRec,lensend);
710 2 SerBuffer[3+lensend]=0;//wasi
711 2 SerBuffer[4+lensend]=0;//wasi
712 2
713 2 rx_bcc.intX=cal_crc3964(&SerBuffer[3],2+lensend);//16);
714 2 SerBuffer[5+lensend]=rx_bcc.chrX[0];
715 2 SerBuffer[6+lensend]=rx_bcc.chrX[1];
716 2
717 2
718 2
719 2
720 2
721 2 break;
722 2
723 2 case 0x85: //
724 2 for(i=0;i<8;i++)
725 2 Call_id[i]= SerBuffer[i*2+4];
726 2 SerBuffer[1] = 0;
727 2 SerBuffer[2] = 0;
728 2 break;
729 2
730 2 case 0x86: //return ocuppy or vacance
731 2
732 2 SerBuffer[2] = 0;
733 2 break;
C51 COMPILER V7.05 MMM 07/08/2005 11:42:13 PAGE 13
734 2
735 2 case 0x87: //Set Meter Number
736 2 //MeterNum.chrX[3] = SerBuffer[3];
737 2 // MeterNum.chrX[2] = SerBuffer[4];
738 2 // MeterNum.chrX[1] = SerBuffer[5];
739 2 // MeterNum.chrX[0] = SerBuffer[6];
740 2 SetPosNum(&SerBuffer[3]); //add
741 2 SerBuffer[1] = 0;
742 2 SerBuffer[2] = 0;
743 2 break;
744 2 case 0x90:
745 2 SerBuffer[1] = 0;
746 2 SerBuffer[2] = 0;
747 2 break;
748 2 case 0x91:
749 2 SerBuffer[1] = 0;
750 2 SerBuffer[2] = 0;
751 2 break;
752 2 case 0x92:
753 2 SerBuffer[1] = 0;
754 2 SerBuffer[2] = 0;
755 2
756 2 break;
757 2 case 0x93:
758 2 SerBuffer[1] = 0;
759 2 SerBuffer[2] = 0;
760 2 break;
761 2
762 2
763 2 default:
764 2 SerBuffer[1] = 250; //command error
765 2 SerBuffer[2] = 0;
766 2 break;
767 2 };
768 1
769 1 }
770 /********************************************************************8*/
771 void Check_call(void)
772 {
773 1 unsigned char idata i,tt;
774 1 for(i=0;i<8;i++)
775 1 {
776 2 if((Call_id[i]>0)&&(Call_id[i]<201))
777 2 {
778 3 tt=Find(Call_id[i],1);
779 3 if(!tt)Find(Call_id[i],1);
780 3
781 3 }
782 2 }
783 1 }
784 //*********************************************************************8
785 void addNum(unsigned int num)
786 {
787 1 inttem.intX= num;
788 1 RemainRec[Numptr][0]=inttem.chrX[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -