📄 rc500.lst
字号:
502 2 {
503 3 status=MI_RESETERR;
504 3 }
505 2 }
506 1 else
507 1 {
508 2 status=MI_RESETERR;
509 2 }
510 1 if(status==MI_OK)
511 1 {
512 2 WriteRC(RegClockQControl,0x0);
513 2 WriteRC(RegClockQControl,0x40);
514 2 DelayUs(100);
515 2 ClearBitMask(RegClockQControl,0x40);
516 2 WriteRC(RegBitPhase,0xad);
517 2 WriteRC(RegRxThreshold,0xff);
518 2 WriteRC(RegRxControl2,01);
519 2 WriteRC(RegFIFOLevel,0x1a);
520 2 WriteRC(RegTimerControl,0x02);
521 2 WriteRC(RegIRqPinConfig,0x02);
522 2 WriteRC(RegTxControl,0x5b);
523 2 }
524 1 return status;
525 1 }
526
527 /*****************************************************************************
528 * 延时
529 *****************************************************************************/
530 void DelayMS(uchar j)
531 {
532 1 uchar i,n;
533 1 for(i=0;i<j;i++)
534 1 { for(n=0;n<230;n++);
535 2 }
536 1 }
537 void DelayUs(uchar j)
538 {
539 1 uchar i,n;
540 1 n=j/5;
541 1 for(i=0;i<n;i++);
542 1 }
543 //**********************************************************************
544 uchar ReadRawRC(uchar Address)
545 {
546 1 /* uchar pdata *pa;
547 1 pa=Address;//+Base_addr;
548 1 return(*pa);*/
549 1 uchar xdata *pa;
550 1 pa=Address+Base_addr;
551 1 return(*pa);
C51 COMPILER V7.05 RC500 12/20/2004 15:31:09 PAGE 10
552 1
553 1 }
554 //**************************************************
555 uchar ReadRC(uchar Address)
556 {
557 1 /*uchar pdata *pa;
558 1 pa=RegPage;
559 1 *pa=Address>>3;
560 1 pa=Address;
561 1 return(*pa);*/
562 1
563 1 uchar xdata *pa;
564 1 pa=Base_addr;
565 1 *pa=Address>>3;
566 1 pa=Address+Base_addr;
567 1 return(*pa);
568 1 }
569 //***********************************************
570 void SetBitMask(uchar reg,uchar mask)
571 {
572 1 char tmp=0x0;
573 1 tmp=ReadRC(reg);
574 1 WriteRC(reg,tmp|mask);
575 1 }
576 //************************************************
577 void WriteRawRC(uchar Address,uchar value)
578 {
579 1 /*uchar pdata *pa;
580 1 pa=Address+Base_addr;
581 1 *pa=value;*/
582 1 uchar xdata *pa;
583 1 pa=Address+Base_addr;
584 1 *pa=value;
585 1 }
586 //**************************************************
587 char ChangeCodeKey(uchar *uncoded,uchar *coded)
588 {
589 1 uchar idata cnt=0;
590 1 uchar idata ln=0;
591 1 uchar idata hn=0;
592 1
593 1 for(cnt=0;cnt<6;cnt++)
594 1 {
595 2 ln=uncoded[cnt]&0x0F;
596 2 hn=uncoded[cnt]>>4;
597 2 coded[cnt*2+1]=(~ln<<4)|ln;
598 2 coded[cnt*2]=(~hn<<4)|hn;
599 2 }
600 1 return MI_OK;
601 1 }
602 //***************************************************
603 char PcdHalt(void)
604 {
605 1 char status=MI_OK;
606 1 idata struct TranSciveBuffer{uchar MfCommand;
607 1 uchar MfLength;
608 1 uchar MfData[2];
609 1 }MfComData;
610 1 struct TranSciveBuffer *pi;
611 1 pi=&MfComData;
612 1
613 1 PcdSetTmo(106);
C51 COMPILER V7.05 RC500 12/20/2004 15:31:09 PAGE 11
614 1 MfComData.MfCommand=PCD_TRANSCEIVE;
615 1 MfComData.MfLength=2;
616 1 MfComData.MfData[0]=PICC_HALT;
617 1 MfComData.MfData[1]=0;
618 1
619 1 status=PcdComTransceive(pi);
620 1 if (status)
621 1 {
622 2 if(status==MI_NOTAGERR||status==MI_ACCESSTIMEOUT)
623 2 status = MI_OK;
624 2 }
625 1 WriteRC(RegCommand,PCD_IDLE);
626 1 return status;
627 1 }
628 /********************************************************
629 char PcdValue(uchar dd_mode,uchar addr,uchar *value)
630 {
631 char status;
632 uchar i;
633 idata struct TranSciveBuffer{uchar MfCommand;
634 uchar MfLength;
635 uchar MfData[4];
636 }MfComData;
637 struct TranSciveBuffer *pi;
638 pi=&MfComData;
639
640 PcdSetTmo(106);
641 MfComData.MfCommand=PCD_TRANSCEIVE;
642 MfComData.MfLength=2;
643 MfComData.MfData[0]=dd_mode;
644 MfComData.MfData[1]=addr;
645
646 status=PcdComTransceive(pi);
647 if(status!=MI_NOTAGERR)
648 {
649 if(MfComData.MfLength!=4)
650 {
651 status=MI_BITCOUNTERR;
652 }
653 else
654 {
655 MfComData.MfData[0]&=0x0f;
656 switch(MfComData.MfData[0])
657 {
658 case 0x00:
659 status=MI_NOTAUTHERR;
660 break;
661 case 0x0a:
662 status=MI_OK;
663 break;
664 case 0x01:
665 status=MI_VALERR;
666 break;
667 default:
668 status=MI_CODEERR;
669 break;
670 }
671 }
672 }
673 if(status==MI_OK)
674 {
675 PcdSetTmo(4);
C51 COMPILER V7.05 RC500 12/20/2004 15:31:09 PAGE 12
676 MfComData.MfCommand=PCD_TRANSCEIVE;
677 MfComData.MfLength=4;
678 pi=&MfComData;
679 for(i=0;i<4;i++)
680 {
681 MfComData.MfData[i]=*(value+i);
682 }
683 status=PcdComTransceive(pi);
684 if(status==MI_OK||status==MI_NOTAGERR)
685 {
686 if(MfComData.MfLength!=4)
687 {
688 status = MI_BITCOUNTERR;
689 }
690 else
691 {
692 status=MI_OK;
693 }
694 }
695 else
696 {
697 status=MI_COM_ERR;
698 }
699 }
700 if(status==MI_OK)
701 {
702 MfComData.MfCommand=PCD_TRANSCEIVE;
703 MfComData.MfLength=2;
704 MfComData.MfData[0]=PICC_TRANSFER;
705 MfComData.MfData[1]=addr;
706 status=PcdComTransceive(pi);
707 if(status!=MI_NOTAGERR)
708 {
709 if(MfComData.MfLength!=4)
710 {
711 status=MI_BITCOUNTERR;
712 }
713 else
714 {
715 MfComData.MfData[0]&=0x0f;
716 switch(MfComData.MfData[0])
717 {
718 case 0x00:
719 status=MI_NOTAUTHERR;
720 break;
721 case 0x0a:
722 status=MI_OK;
723 break;
724 case 0x01:
725 status=MI_VALERR;
726 break;
727 default:
728 status=MI_CODEERR;
729 break;
730 }
731 }
732 }
733 }
734 return status;
735 }*/
736
737
C51 COMPILER V7.05 RC500 12/20/2004 15:31:09 PAGE 13
738
739
740
741
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1856 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 69
IDATA SIZE = ---- 84
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -