📄 main.lst
字号:
616 2 ErrNum = Status;
617 2 break;
618 2
619 2
620 2 case 0x42: // Anticoll
621 2
622 2 Status = M500PiccAnticoll(SerBuffer[BCNT], &SerBuffer[SERNR]);
623 2
624 2 if (Status == MI_OK)
625 2 {
626 3 SerBuffer[LENGTH] = 4;
627 3 // RingOn();
628 3 AccOk = 1;
629 3 }
630 2 ErrNum = Status;
631 2 break;
632 2
633 2
634 2 case 0x43: // Select
635 2
636 2 memcpy(card_snr,&SerBuffer[SERNR],4); // store serial number in globle var
637 2
638 2 //输入: 卡片序列号 输出:卡片容量 SIZE = 0X88H
639 2 Status = M500PiccSelect(&SerBuffer[SERNR], &SerBuffer[SIZE]);
640 2 if (Status == MI_OK)
641 2 {
642 3 SerBuffer[LENGTH] = 1;
643 3 }
644 2
645 2 // RingOn();
646 2
647 2 AccOk = 1;
648 2 ErrNum = Status;
649 2
650 2 break;
651 2
652 2
653 2 case 0x44: // Authentication
C51 COMPILER V4.01, MAIN 29/08/06 08:02:00 PAGE 11
654 2
655 2 if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
656 2 else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA =0x60 MODE =3 key_sector = SerBuffer[4] block = 9 SerBuf
-fer[SECNR]+1)*4-1 SECNR= 4
657 2
658 2 Status = M500PiccAuth(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
659 2
660 2 // Status = M500PiccAuthE2(SerBuffer[MODE], card_snr, SerBuffer[SECNR], (SerBuffer[SECNR]+1)*4-1);
661 2
662 2 AuthOk = Status;
663 2 ErrNum = Status;
664 2
665 2 break;
666 2
667 2
668 2 case 0x45: // Halt
669 2
670 2 Status = M500PiccHalt();
671 2 break;
672 2
673 2
674 2 case 0x46: // Read
675 2
676 2 Status = M500PiccRead(SerBuffer[ADR], &SerBuffer[ADR]);//ADR = 3
677 2 if (Status == MI_OK)
678 2 {
679 3 SerBuffer[LENGTH] = 16;
680 3 }
681 2 ErrNum = Status;
682 2 break;
683 2
684 2
685 2 case 0x47: // Write
686 2
687 2 Status = M500PiccWrite(SerBuffer[ADR], &SerBuffer[DATABYTES]);
688 2 ErrNum = Status;
689 2 break;
690 2
691 2
692 2 case 0x48: // Increment
693 2
694 2 mode = PICC_INCREMENT;
695 2 addr = SerBuffer[ADR];
696 2 memcpy(value,&SerBuffer[VALUE],4);
697 2 Status = MI_OK;
698 2 break;
699 2
700 2
701 2 case 0x49: // Decrement
702 2
703 2 mode = PICC_DECREMENT;
704 2 addr = SerBuffer[ADR];
705 2 memcpy(value,&SerBuffer[VALUE],4);
706 2 Status = MI_OK;
707 2 break;
708 2
709 2
710 2 case 0x4A: // Restore
711 2
712 2 mode = PICC_RESTORE;
713 2 addr = SerBuffer[ADR];
714 2 memset(value,0,4);
715 2 Status = MI_OK;
716 2 break;
717 2
718 2
C51 COMPILER V4.01, MAIN 29/08/06 08:02:00 PAGE 12
719 2 case 0x4B: // Transfer
720 2
721 2 if (EnableTransferCmd)
722 2 {
723 3 Status = M500PiccValue(mode, addr, value, SerBuffer[ADR]);
724 3 }
725 2 else
726 2 {
727 3 Status = MI_CODEERR;
728 3 }
729 2 break;
730 2
731 2
732 2 case 0x4C: // Load Key
733 2
734 2 if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
735 2 else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
736 2 // _____________________________________________________________________________
737 2 //
738 2 // FUNCTION: M500PcdLoadKeyE2
739 2 // IN: key_type PICC_AUTHENT1A or PICC_AUTHENT1B
740 2 // sector key sector number, on which the key should be stored
741 2 // values from 0 to 15 are valid
742 2 // uncoded_keys 6 bytes key
743 2 // OUT: -
744 2 // RETURN:
745 2 // COMMENT: This function stores the keys in the reader internal E2PROM.
746 2 // These keys are available for the function M500PiccAuthE2.
747 2 // ______________________________________________________________________________
748 2 //
749 2 Status = M500PcdLoadKeyE2(SerBuffer[MODE], SerBuffer[SECNR], &SerBuffer[13]);
750 2 ErrNum = Status;
751 2 break;
752 2
753 2
754 2 case 0x4D: // comm check char
755 2
756 2 if (SerBuffer[MODE] == SER_BCC)
757 2 {
758 3 CheckByteCnt = BCC_CHECKBYTECNT;
759 3 }
760 2 else
761 2 {
762 3 CheckByteCnt = CRC_CHECKBYTECNT;
763 3 }
764 2 Status = MI_OK;
765 2 break;
766 2
767 2
768 2 case 0x4E: // Reset
769 2
770 2 M500PcdRfReset(SerBuffer[TIME]);
771 2 Status = MI_OK;
772 2 break;
773 2
774 2
775 2 case 0x4F: // Get Info
776 2
777 2 if ((len == 0) || (len == 1 && SerBuffer[MODE] == 1))
778 2 {
779 3 for (adr = INFO; adr < INFO_CNT + INFO; adr++)
780 3 {
781 4 SerBuffer[adr] = SW_Rel[adr-INFO];
782 4 }
783 3 SerBuffer[adr++] = ' ';
784 3 SerBuffer[adr++] = '0';
C51 COMPILER V4.01, MAIN 29/08/06 08:02:00 PAGE 13
785 3 SerBuffer[adr++] = 'x';
786 3 SerBuffer[adr++] = xtoa_h(Snr_RC500[0]);
787 3 SerBuffer[adr++] = xtoa_l(Snr_RC500[0]);
788 3 SerBuffer[adr++] = xtoa_h(Snr_RC500[1]);
789 3 SerBuffer[adr++] = xtoa_l(Snr_RC500[1]);
790 3 SerBuffer[adr++] = xtoa_h(Snr_RC500[2]);
791 3 SerBuffer[adr++] = xtoa_l(Snr_RC500[2]);
792 3 SerBuffer[adr++] = xtoa_h(Snr_RC500[3]);
793 3 SerBuffer[adr++] = xtoa_l(Snr_RC500[3]);
794 3 SerBuffer[adr++] = '\0';
795 3
796 3 SerBuffer[LENGTH] = adr - INFO;
797 3 }
798 2 else
799 2 {
800 3 if (SerBuffer[MODE] == 2)
801 3 {
802 4 SerBuffer[INFO] = (uchar) Capt;
803 4 SerBuffer[INFO + 1] = (uchar)(Capt >> 8);
804 4 SerBuffer[INFO + 2] = BaudRate;
805 4 SerBuffer[INFO + 3] = DelayRate;
806 4 }
807 3 else
808 3 {
809 4 SerBuffer[INFO] = Snr_RC500[0];
810 4 SerBuffer[INFO + 1] = Snr_RC500[1];
811 4 SerBuffer[INFO + 2] = Snr_RC500[2];
812 4 SerBuffer[INFO + 3] = Snr_RC500[3];
813 4 }
814 3 SerBuffer[LENGTH] = 4;
815 3 }
816 2
817 2 Status = MI_OK;
818 2 break;
819 2
820 2
821 2 case 0x50: // Set Control Bit
822 2 if (SerBuffer[INFO]&0x01)
823 2 Status = MI_OK;
824 2 if (SerBuffer[INFO]&0x02)
825 2 Status = MI_OK;
826 2 if (SerBuffer[INFO]&0x04)
827 2 Status = MI_OK;
828 2
829 2 Status = MI_OK;
830 2 break;
831 2
832 2
833 2 case 0x51: // Clr Control Bit
834 2
835 2 Status = MI_OK;
836 2 break;
837 2
838 2
839 2 case 0x52: // Config
840 2
841 2 Status = M500PcdConfig();
842 2
843 2 #ifdef AUTODELAY
844 2 DelayRate = 0;
845 2 #endif
846 2 break;
847 2
848 2
849 2 case 0x53: // Check Write
850 2
C51 COMPILER V4.01, MAIN 29/08/06 08:02:00 PAGE 14
851 2 Status = MIS_CHK_FAILED;
852 2
853 2 if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
854 2 {
855 3 if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
856 3 {
857 4 break;
858 4 }
859 3 }
860 2 if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
861 2 {
862 3 if (M500PiccRequest(PICC_REQALL, tt) != MI_OK)
863 3 {
864 4 break;
865 4 }
866 3 if (M500PiccSelect(&SerBuffer[SERNR], &size) != MI_OK)
867 3 {
868 4 break;
869 4 }
870 3 }
871 2 memcpy(card_snr,&SerBuffer[SERNR],4);
872 2 if(SerBuffer[AUTHMODE]&0X04) SerBuffer[AUTHMODE]=PICC_AUTHENT1B; // keyB
873 2 else SerBuffer[AUTHMODE]=PICC_AUTHENT1A; // keyA
874 2
875 2 //if (Status = M500PiccAuth(SerBuffer[AUTHMODE], card_snr,
876 2 // SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
877 2 if (Status = M500PiccAuthE2(SerBuffer[AUTHMODE], card_snr,
878 2 SerBuffer[ADRCHKWR]>>2, SerBuffer[ADRCHKWR]) != MI_OK)
879 2 {
880 3 break;
881 3 }
882 2
883 2 if (M500PiccRead(SerBuffer[ADRCHKWR], tmp) != MI_OK)
884 2 {
885 3 break;
886 3 }
887 2
888 2 if (memcmp(&SerBuffer[DATACHKWR], tmp, 16) != MI_OK)
889 2 {
890 3 Status = MIS_CHK_COMPERR;
891 3 }
892 2 else
893 2 {
894 3 Status = MIS_CHK_OK;
895 3 }
896 2 break;
897 2
898 2
899 2 case 0x54: // Set Port
900 2
901 2 P1 |= (SerBuffer[PORTBYTE]&0x0f); // set the desired port pin
902 2 P1 &= (SerBuffer[PORTBYTE]|0xf0); // clear the desired port pin
903 2 if (SerBuffer[PORTBYTE]&0x10)
904 2 LED = ON;
905 2 else
906 2 LED = OFF;
907 2 Status = MI_OK;
908 2 break;
909 2
910 2
911 2 case 0x55: // Get Port
912 2
913 2 SerBuffer[PORTBYTE] = P1&0xf;
914 2 SerBuffer[LENGTH] = 1;
915 2 Status = MI_OK;
916 2 break;
C51 COMPILER V4.01, MAIN 29/08/06 08:02:00 PAGE 15
917 2
918 2 case 0x56: // Authentication2
919 2
920 2 if(SerBuffer[MODE]&0X04) SerBuffer[MODE]=PICC_AUTHENT1B; // keyB
921 2 else SerBuffer[MODE]=PICC_AUTHENT1A; // keyA
922 2
923 2 //Status = M500PiccAuth(SerBuffer[MODE], card_snr,
924 2 // SerBuffer[SECNR], SerBuffer[AUTHADD]);
925 2 Status = M500PiccAuthE2(SerBuffer[MODE], card_snr,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -