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