📄 mmm.lst
字号:
478 4 bcc = bcc ^ SerBuffer[i] ;
479 4 };
480 3 SerBuffer[SerBuffer[2]+3] = bcc;
481 3 En485 = SEND;
482 3 //Ir_En = SEND;
483 3 SBUF = STX ; //发送起始位}
484 3 RecvReady = TRUE ;
485 3 RecvState = RECV_DLE ; //准备接收应答
C51 COMPILER V7.05 MMM 01/30/2003 18:32:34 PAGE 9
486 3 // LED_GREEN = ~LED_GREEN;
487 3 while(!TI) ;
488 3 TI = FALSE ;
489 3 En485 = RECV;
490 3 //Ir_En = RECV;
491 3 START_T0(T_533_ms) ; //chao shi
492 3 } ;
493 2 };
494 1
495 1 }
496 /*************************原有的函数需改变*************************************
497 * *
498 * Function: isr_timer0 *
499 * *
500 * Input: - *
501 * Output: - *
502 * *
503 * Description: *
504 * *
505 * *
506 ****************************************************************************/
507 void isr_timer0(void) interrupt 1 using 0
508 {
509 1 //TR0=0;
510 1 rest_delay++;
511 1 if(com2)
512 1 {
513 2 if(RXTimerOUT!=0) //此if{}else{} 为新加入的判断超时功能
514 2 {
515 3 RXTimerOUT--;
516 3 }
517 2 else
518 2 {
519 3
520 3 RXSTAT=0;
521 3 RXNOM=0;
522 3 }
523 2 }//end ifcom2
524 1
525 1 if(com1)
526 1 {
527 2 if ( Timer0Cnt != 0 )
528 2 {
529 3 --Timer0Cnt;
530 3 }
531 2 else
532 2 {
533 3 TR0 = 0 ;
534 3 if ((RecvState == RECV_DLE) || (RecvState == RECV_DLE_OR_NAK)) //发送起始字超时
535 3 {
536 4 ErrorCount++;
537 4 if ( ErrorCount <= 1)
538 4 {
539 5 SendReady = TRUE;
540 5 TI = 1;
541 5 }
542 4 else
543 4 {
544 5 ErrorCount = 0 ;
545 5 SendReady = FALSE;
546 5 RecvReady = TRUE;
547 5 RecvState = RECV_STX;
C51 COMPILER V7.05 MMM 01/30/2003 18:32:34 PAGE 10
548 5 En485 = RECV;
549 5 //Ir_En = RECV;
550 5
551 5 }
552 4 }
553 3 else //接收超时
554 3 {
555 4 SendReady = FALSE;
556 4 RecvReady = TRUE;
557 4 RecvState = RECV_STX;
558 4 En485 = RECV;
559 4
560 4 };
561 3 };
562 2 }
563 1
564 1 TR0=1;
565 1 TH0=0X90;
566 1 TL0=0X95;
567 1 //TR0=1;
568 1 }
569 //**************************************************************
570 unsigned char Find(unsigned char addr,bit call)
571 {
572 1 unsigned char data i=0,j;
573 1 unsigned int idata crc;
574 1 TX_EN=1;
575 1 Delay1ms(2);
576 1 // Test_led=!Test_led;
577 1 RXtem[0]=0X55;
578 1 RXtem[1]=0XAA;
579 1 RXtem[2]=addr;
580 1 if(call) //有传呼信息
581 1 {
582 2 RXtem[3]=0x33;
583 2 // PutChar1(0x33);
584 2 }
585 1 else
586 1 {
587 2 RXtem[3]=0x44;
588 2 // PutChar1(0x44);
589 2 }
590 1 crc=cal_crc(RXtem, 4);
591 1 RXtem[4]=crc>>8;
592 1 RXtem[5]=(unsigned char)crc;
593 1 for(j=0;j<3;j++)
594 1 {
595 2 for(i=0;i<6;i++)
596 2 {
597 3 PutChar1( RXtem[i]);
598 3 }
599 2 }
600 1 TX_EN=0;
601 1 Comm_On();
602 1 Delay1ms(1);
603 1 rxok=0; //add
604 1 /*while(!rxok)
605 1 {
606 1 Delay1ms(1);
607 1 i++;
608 1 if(i>15)break;
609 1 }*/
C51 COMPILER V7.05 MMM 01/30/2003 18:32:34 PAGE 11
610 1 Delay1ms(22);
611 1 Comm_Off();
612 1 TX_EN=1;
613 1 if(rxok)
614 1 {
615 2 rxok=0;
616 2 if(ring_flg==2)Waring=1;
617 2 return(ring_flg);
618 2 }
619 1 else
620 1 {
621 2 return 0;// return 0;
622 2 }
623 1
624 1 }
625
626 /****************************************************************************
627 * *
628 * Function: TransferRecord *
629 * *
630 * Input: - uchar 1 *
631 * Output: - 0 *
632 * *
633 * Description: *
634 ****************************************************************************/
635 TransferRecord(unsigned char Day , unsigned int i)
636 {
637 1 Day=0;
638 1 SerBuffer[3] = RemainRec[i][0];//.Flg ;
639 1
640 1 SerBuffer[4] = RemainRec[i][1];//ParkingRecord[i].CardID.chrX[3] ;
641 1 SerBuffer[5] =RemainRec[i][2];//ParkingRecord[i].CardID.chrX[2] ;
642 1 SerBuffer[6] =RemainRec[i][3];//ParkingRecord[i].CardID.chrX[1] ;
643 1 SerBuffer[7] =RemainRec[i][4];//ParkingRecord[i].CardID.chrX[0] ;
644 1
645 1 SerBuffer[8] = RemainRec[i][5];// ParkingRecord[i].BeginTime.hour ;
646 1 SerBuffer[9] =RemainRec[i][6];// ParkingRecord[i].BeginTime.minute ;
647 1 SerBuffer[10]= RemainRec[i][7];// ParkingRecord[i].BeginTime.second ;
648 1
649 1 SerBuffer[11] =RemainRec[i][8]; // ParkingRecord[i].BeginTime.century ;
650 1 SerBuffer[12] =RemainRec[i][9];// ParkingRecord[i].BeginTime.year ;
651 1 SerBuffer[13] =RemainRec[i][10];// ParkingRecord[i].BeginTime.month ;
652 1 SerBuffer[14] =RemainRec[i][11];// ParkingRecord[i].BeginTime.day ;
653 1 SerBuffer[15] =RemainRec[i][12];
654 1 SerBuffer[16] =RemainRec[i][13];
655 1 SerBuffer[17] =RemainRec[i][14];
656 1 SerBuffer[18] =RemainRec[i][15];
657 1 //SerBuffer[14] =RemainRec[i][16];
658 1 }
659 //*************************************************************************
660 void SetPosNum(unsigned char xdata *dat)
661 {
662 1 //ByteWrite_Check (124,dat[0]);
663 1 ByteWrite_Check(20,dat[0]);
664 1 ADDR=dat[0];
665 1
666 1 }
667 /****************************************************************************
668 * cmd_execution(); *
669 * Function: *
670 * *
671 * Input: *
C51 COMPILER V7.05 MMM 01/30/2003 18:32:34 PAGE 12
672 * Output: - *
673 * *
674 * Description: *
675 ****************************************************************************/
676 void cmd_execution(void)
677 { unsigned char len ; //Status ;//, adr ;
678 1 //unsigned int e;
679 1 //unsigned char idata size , tt[2];
680 1 unsigned char i;
681 1 //WatchDog();
682 1 len = SerBuffer[2] ;
683 1 SerBuffer[2] = 0 ;
684 1
685 1 switch ( SerBuffer[1] )
686 1 {
687 2 case 0x80: //Write time
688 2
689 2 SerBuffer[1] = 0;
690 2 SerBuffer[2] = 0;
691 2 break;
692 2 case 0x81: //green LED
693 2 if ( SerBuffer[3] == 1) {LED_GREEN = 1;}
694 2 else if( SerBuffer[3] == 0) { LED_GREEN = 0;};
695 2
696 2 SerBuffer[1] = 0;
697 2 SerBuffer[2] = 0;
698 2 break;
699 2
700 2 case 0x82: //red RED
701 2 if ( SerBuffer[3] == 1) {LED_RED = 1;}
702 2 else if( SerBuffer[3] == 0) { LED_RED = 0;};
703 2
704 2 SerBuffer[1] = 0;
705 2 SerBuffer[2] = 0;
706 2 break;
707 2
708 2
709 2 case 0x83: //Transfer Record
710 2 // Status = TransferRecord(SerBuffer[3],SerBuffer[4]);
711 2 // SerBuffer[1] = Status;
712 2 recordint.chrX[1]=SerBuffer[4];
713 2 recordint.chrX[0]=SerBuffer[5];
714 2
715 2 TransferRecord(SerBuffer[3],recordint.intX);
716 2 SerBuffer[1] =0;
717 2 SerBuffer[2] =16;
718 2
719 2
720 2
721 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -