📄 m500auc.lst
字号:
709 2 // initialize waterlevel to value 4
710 2 WriteIO(RegFIFOLevel,0x04);
711 2
712 2 //Timer configuration
713 2 WriteIO(RegTimerControl,0x02); // TStopRxEnd=0,TStopRxBeg=0,
714 2 // TStartTxEnd=1,TStartTxBeg=0
715 2 // timer must be stopped manually
716 2 M500PcdSetTmo(1); // short timeout
717 2
718 2 WriteIO(RegIRqPinConfig,0x03); // interrupt active low enable
719 2
720 2 M500PcdRfReset(1); // Rf - reset and enable output driver
721 2
722 2 // initialize internal key memory
723 2 //for (i = 0; i < 16; i++)
724 2 // for (j = 0; j < 12; j++)
725 2 // MKeys[i][j] = 0xff;
726 2 }
727 1 return status;
728 1 }
*** WARNING C280 IN LINE 678 OF SOURCE\M500AUC.C: 'i': unreferenced local variable
*** WARNING C280 IN LINE 679 OF SOURCE\M500AUC.C: 'j': unreferenced local variable
729
730 ///////////////////////////////////////////////////////////////////////
731 // M I F A R E R E M O T E A N T E N N A
732 // Configuration of slave module
733 ///////////////////////////////////////////////////////////////////////
C51 COMPILER V7.02a M500AUC 07/24/2003 11:05:36 PAGE 13
734 char M500PcdMfInOutSlaveConfig(void)
735 {
736 1 char idata status = MI_OK;
737 1
738 1 FlushFIFO(); // empty FIFO
739 1 ResetInfo(MInfo);
740 1 MSndBuffer[0] = 0x10; // addr low byte
741 1 MSndBuffer[1] = 0x00; // addr high byte
742 1
743 1 MSndBuffer[2] = 0x00; // Page
744 1 MSndBuffer[3] = 0x7B; // RegTxControl modsource 11,InvTx2,Tx2RFEn,TX1RFEn
745 1 MSndBuffer[4] = 0x3F; // RegCwConductance
746 1 MSndBuffer[5] = 0x3F; // RFU13
747 1 MSndBuffer[6] = 0x19; // RFU14
748 1 MSndBuffer[7] = 0x13; // RegModWidth
749 1 MSndBuffer[8] = 0x00; // RFU16
750 1 MSndBuffer[9] = 0x00; // RFU17
751 1
752 1 MSndBuffer[10] = 0x00; // Page
753 1 MSndBuffer[11] = 0x73; // RegRxControl1
754 1 MSndBuffer[12] = 0x08; // RegDecoderControl
755 1 MSndBuffer[13] = 0x6c; // RegBitPhase
756 1 MSndBuffer[14] = 0xFF; // RegRxThreshold
757 1 MSndBuffer[15] = 0x00; // RFU1D
758 1 MSndBuffer[16] = 0x00; // RegRxControl2
759 1 MSndBuffer[17] = 0x00; // RegClockQControl
760 1
761 1 MSndBuffer[18] = 0x00; // Page
762 1 MSndBuffer[19] = 0x06; // RegRxWait
763 1 MSndBuffer[20] = 0x03; // RegChannelRedundancy
764 1 MSndBuffer[21] = 0x63; // RegCRCPresetLSB
765 1 MSndBuffer[22] = 0x63; // RegCRCPresetMSB
766 1 MSndBuffer[23] = 0x0; // RFU25
767 1 MSndBuffer[24] = 0x04; // RegMfOutSelect enable mfout = manchester HT
768 1 MSndBuffer[25] = 0x00; // RFU27
769 1
770 1 // PAGE 5 FIFO, Timer and IRQ-Pin Configuration
771 1 MSndBuffer[26] = 0x00; // Page
772 1 MSndBuffer[27] = 0x08; // RegFIFOLevel
773 1 MSndBuffer[28] = 0x07; // RegTimerClock
774 1 MSndBuffer[29] = 0x06; // RegTimerControl
775 1 MSndBuffer[30] = 0x0A; // RegTimerReload
776 1 MSndBuffer[31] = 0x02; // RegIRqPinConfig
777 1 MSndBuffer[32] = 0x00; // RFU
778 1 MSndBuffer[33] = 0x00; // RFU
779 1 MInfo.nBytesToSend = 34;
780 1
781 1 status = M500PcdCmd(PCD_WRITEE2,
782 1 MSndBuffer,
783 1 MRcvBuffer,
784 1 &MInfo); // write e2
785 1 return status;
786 1 }
787
788 ///////////////////////////////////////////////////////////////////////
789 // M I F A R E R E M O T E A N T E N N A
790 // Configuration of master module
791 ///////////////////////////////////////////////////////////////////////
792 char M500PcdMfInOutMasterConfig(void)
793 {
794 1 WriteIO(RegRxControl2,0x42);
795 1 WriteIO(RegTxControl,0x10);
C51 COMPILER V7.02a M500AUC 07/24/2003 11:05:36 PAGE 14
796 1 WriteIO(RegBitPhase,0x11);
797 1
798 1 return MI_OK;
799 1 }
800
801 ///////////////////////////////////////////////////////////////////////
802 // M A S T E R K E Y L O A D
803 ///////////////////////////////////////////////////////////////////////
804 char M500PcdLoadMk(unsigned char auth_mode, // KEYA or KEYB
805 unsigned char key_addr, // 0 <= key_addr <= 15
806 unsigned char *mk) // 6 bytes uncoded master key
807 {
808 1 unsigned char idata offset = (auth_mode == PICC_AUTHENT1A) ? 0 : 6;
809 1
810 1 //memcpy(MKeys[key_addr] + offset,mk,6);// modified by dongyongde
811 1 return MI_OK;
812 1 }
*** WARNING C280 IN LINE 805 OF SOURCE\M500AUC.C: 'key_addr': unreferenced local variable
*** WARNING C280 IN LINE 806 OF SOURCE\M500AUC.C: 'mk': unreferenced local variable
813
814 ///////////////////////////////////////////////////////////////////////
815 // E E P R O M M A S T E R K E Y L O A D
816 ///////////////////////////////////////////////////////////////////////
817 char M500PcdLoadKeyE2(unsigned char key_type,
818 unsigned char sector,
819 unsigned char *uncoded_keys)
820 {
821 1 char idata status = MI_OK;
822 1 // eeprom address calculation
823 1 // 0x80 ... offset
824 1 // key_sector ... sector
825 1 // 0x18 ... 2 * 12 = 24 = 0x18
826 1 unsigned short idata e2addr = 0x80 + sector * 0x18;
827 1 unsigned char idata *e2addrbuf = (unsigned char*)&e2addr;
828 1 unsigned char idata keycoded[12];
829 1
830 1 if (key_type == PICC_AUTHENT1B)
831 1 e2addr += 12; // key B offset
832 1
833 1 FlushFIFO(); // empty FIFO
834 1 ResetInfo(MInfo);
835 1
836 1 M500HostCodeKey(uncoded_keys,keycoded);
837 1 memcpy(MSndBuffer,e2addrbuf,2); // write low and high byte of address
838 1 MSndBuffer[2] = MSndBuffer[0]; // Move the LSB of the 2-bytes
839 1 MSndBuffer[0] = MSndBuffer[1]; // address to the first byte
840 1 MSndBuffer[1] = MSndBuffer[2];
841 1 memcpy(&MSndBuffer[2],keycoded,12); // write 12 bytes of coded keys
842 1 MInfo.nBytesToSend = 14;
843 1
844 1 // write load command
845 1 status = M500PcdCmd(PCD_WRITEE2,
846 1 MSndBuffer,
847 1 MRcvBuffer,
848 1 &MInfo);
849 1
850 1 return status;
851 1 }
852
853 ///////////////////////////////////////////////////////////////////////
854 // E E P R O M R E A D
855 ///////////////////////////////////////////////////////////////////////
C51 COMPILER V7.02a M500AUC 07/24/2003 11:05:36 PAGE 15
856 char PcdReadE2(unsigned short startaddr,
857 unsigned char length,
858 unsigned char* _data)
859 {
860 1 char status = MI_OK;
861 1
862 1 // ************* Cmd Sequence **********************************
863 1 ResetInfo(MInfo);
864 1 MSndBuffer[0] = startaddr & 0xFF;
865 1 MSndBuffer[1] = (startaddr >> 8) & 0xFF;
866 1 MSndBuffer[2] = length;
867 1 MInfo.nBytesToSend = 3;
868 1 status = M500PcdCmd(PCD_READE2,
869 1 MSndBuffer,
870 1 MRcvBuffer,
871 1 &MInfo);
872 1 if (status == MI_OK)
873 1 {
874 2 memcpy(_data,MRcvBuffer,length);
875 2 }
876 1 else // Response Processing
877 1 {
878 2 _data[0] = 0;
879 2 }
880 1 return status ;
881 1 }
882
883 ///////////////////////////////////////////////////////////////////////
884 // E E P R O M W R I T E
885 ///////////////////////////////////////////////////////////////////////
886 char PcdWriteE2(unsigned short startaddr,
887 unsigned char length,
888 unsigned char* _data)
889 {
890 1 char status = MI_OK;
891 1
892 1 // ************* Cmd Sequence **********************************
893 1 ResetInfo(MInfo);
894 1 MSndBuffer[0] = startaddr & 0xFF;
895 1 MSndBuffer[1] = (startaddr >> 8) & 0xFF;
896 1 memcpy(MSndBuffer + 2,_data,length);
897 1
898 1 MInfo.nBytesToSend = length + 2;
899 1
900 1 status = M500PcdCmd(PCD_WRITEE2,
901 1 MSndBuffer,
902 1 MRcvBuffer,
903 1 &MInfo); // write e2
904 1 return status;
905 1 }
906
907 ///////////////////////////////////////////////////////////////////////
908 // C O N F I G M F O U T S E L E C T
909 ///////////////////////////////////////////////////////////////////////
910 char M500PcdMfOutSelect(unsigned char type)
911 {
912 1 WriteIO(RegMfOutSelect,type&0x7);
913 1 return MI_OK;
914 1 }
915
916 ///////////////////////////////////////////////////////////////////////
917 // W R I T E R E G I S T E R
C51 COMPILER V7.02a M500AUC 07/24/2003 11:05:36 PAGE 16
918 ///////////////////////////////////////////////////////////////////////
919 char M500PcdWriteRegister(unsigned char Reg, unsigned char value)
920 {
921 1 WriteIO(Reg,value);
922 1 return MI_OK;
923 1 }
924
925 ///////////////////////////////////////////////////////////////////////
926 // R E A D R E G I S T E R
927 ///////////////////////////////////////////////////////////////////////
928 char M500PcdReadRegister(unsigned char Reg)
929 {
930 1 char value;
931 1
932 1 value = ReadIO(Reg);
933 1 return (value);
934 1 }
935
936 ///////////////////////////////////////////////////////////////////////
937 // M I F A R E R E Q U E S T
938 ///////////////////////////////////////////////////////////////////////
939
940 char M500PiccRequest(unsigned char req_code, // request code ALL = 0x52// or IDLE = 0x26
941 unsigned char *atq) // answer to request
942 {
943 1 return M500PiccCommonRequest(req_code,atq);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -