📄 fm1715.lst
字号:
806 2 return(FM1715_WRITEERR);
807 2 }
808 1 }
809
810
811 /****************************************************************/
812 /*名称: MIF_Increment */
813 /*功能: 该函数实现 MIFARE 卡自动增值操作 */
814 /*输入: buff: 四个字节数值起始地址 */
815 /* Block_Adr: 块地址 */
816 /*输出: FM1715_NOTAGERR: 无卡 */
817 /* FM1715_BYTECOUNTERR: 接收字节错误 */
818 /* FM1715_NOTAUTHERR: 未经权威认证 */
819 /* FM1715_EMPTY: 数据溢出错误 */
820 /* FM1715_CRCERR: CRC 校验错 */
821 /* FM1715_PARITYERR: 奇偶校验错 */
822 /* FM1715_INCRERR: 卡片增款操作失败 */
823 /* FM1715_OK: 应答正确
824 */
825 /****************************************************************/
826 uchar MIF_Increment(uchar idata *buff,uchar Block_Adr)
827 {
828 1 uchar temp;
829 1 uchar idata *F_buff;
830 1
831 1 CRCPresetLSB = 0x63;
832 1 CWConductance = 0x3f;
833 1 F_buff = buff + 4;
834 1 *F_buff = RF_CMD_INC;
835 1
836 1 *(F_buff + 1) = Block_Adr;
837 1 ChannelRedundancy = 0x07;
838 1
839 1 temp = Command_Send(2, F_buff, Transceive);
840 1 if (temp == FALSE)
841 1 {
842 2 return FM1715_NOTAGERR;
843 2 }
844 1
845 1 temp = FIFO_Length;
846 1 if (temp == 0)
847 1 {
848 2 return FM1715_BYTECOUNTERR;
849 2 }
850 1
851 1 Read_FIFO(F_buff);
852 1 temp = *F_buff;
853 1 switch(temp)
854 1 {
855 2 case 0x00:
856 2 //break;
857 2 return(FM1715_NOTAUTHERR); //暂时屏蔽掉写错误
858 2 case 0x04:
859 2 return(FM1715_EMPTY);
860 2 case 0x0a:
861 2 break;
C51 COMPILER V7.09 FM1715 07/26/2005 17:00:30 PAGE 15
862 2 case 0x01:
863 2 return(FM1715_CRCERR);
864 2 case 0x05:
865 2 return(FM1715_PARITYERR);
866 2 default:
867 2 return(FM1715_INCRERR);
868 2 }
869 1
870 1 temp = Command_Send(4, buff, Transmit);
871 1 if (temp == FALSE)
872 1 {
873 2 return FM1715_INCRERR;
874 2 }
875 1
876 1 return FM1715_OK;
877 1 }
878
879
880 /****************************************************************/
881 /*名称: MIF_Decrement */
882 /*功能: 该函数实现 MIFARE 卡自动减值操作 */
883 /*输入: buff: 四个字节数值起始地址 */
884 /* Block_Adr: 块地址 */
885 /*输出: FM1715_NOTAGERR: 无卡 */
886 /* FM1715_BYTECOUNTERR: 接收字节错误 */
887 /* FM1715_NOTAUTHERR: 未经权威认证 */
888 /* FM1715_EMPTY: 数据溢出错误 */
889 /* FM1715_CRCERR: CRC 校验错 */
890 /* FM1715_PARITYERR: 奇偶校验错 */
891 /* FM1715_DECRERR: 卡片扣款操作失败 */
892 /* FM1715_OK: 应答正确
893 */
894 /****************************************************************/
895 uchar MIF_Decrement(uchar idata *buff,uchar Block_Adr)
896 {
897 1 uchar temp;
898 1 uchar idata *F_buff;
899 1 CRCPresetLSB = 0x63;
900 1 CWConductance = 0x3f;
901 1 F_buff = buff + 4;
902 1 *F_buff = RF_CMD_DEC;
903 1 *(F_buff + 1) = Block_Adr;
904 1 ChannelRedundancy = 0x07;
905 1 temp = Command_Send(2, F_buff, Transceive);
906 1 if (temp == FALSE)
907 1 {
908 2 return FM1715_NOTAGERR;
909 2 }
910 1 temp = FIFO_Length;
911 1 if (temp == 0)
912 1 {
913 2 return FM1715_BYTECOUNTERR;
914 2 }
915 1 Read_FIFO(F_buff);
916 1 temp = *F_buff;
917 1 switch (temp)
918 1 {
919 2 case 0x00:
920 2 //break;
921 2 return(FM1715_NOTAUTHERR); //暂时屏蔽掉写错误
922 2 case 0x04:
923 2 return(FM1715_EMPTY);
C51 COMPILER V7.09 FM1715 07/26/2005 17:00:30 PAGE 16
924 2 case 0x0a:
925 2 break;
926 2 case 0x01:
927 2 return(FM1715_CRCERR);
928 2 case 0x05:
929 2 return(FM1715_PARITYERR);
930 2 default:
931 2 return(FM1715_DECRERR);
932 2 }
933 1
934 1 temp = Command_Send(4, buff, Transmit);
935 1 if (temp == FALSE)
936 1 {
937 2 return(FM1715_DECRERR);
938 2 }
939 1 return FM1715_OK;
940 1 }
941
942 /****************************************************************/
943 /*名称: MIF_Restore */
944 /*功能: 该函数实现 MIFARE 卡自动恢复,备份操作 */
945 /*输入: Block_Adr: 块地址 */
946 /*输出: FM1715_NOTAGERR: 无卡 */
947 /* FM1715_BYTECOUNTERR: 接收字节错误 */
948 /* FM1715_NOTAUTHERR: 未经权威认证 */
949 /* FM1715_EMPTY: 数据溢出错误 */
950 /* FM1715_CRCERR: CRC 校验错 */
951 /* FM1715_PARITYERR: 奇偶校验错 */
952 /* FM1715_RESTERR: 卡片恢复,备份操作失败 */
953 /* FM1715_OK: 应答正确
954 */
955 /****************************************************************/
956 uchar MIF_Restore(uchar Block_Adr)
957 {
958 1 uchar temp,i;
959 1 CRCPresetLSB = 0x63;
960 1 CWConductance = 0x3f;
961 1 ChannelRedundancy = 0x07;
962 1 *buffer = RF_CMD_RESTORE;
963 1 *(buffer + 1) = Block_Adr;
964 1 temp = Command_Send(2, buffer, Transceive);
965 1 if (temp == FALSE)
966 1 {
967 2 return FM1715_NOTAGERR;
968 2 }
969 1 temp = FIFO_Length;
970 1 if (temp == 0)
971 1 {
972 2 return FM1715_BYTECOUNTERR;
973 2 }
974 1 Read_FIFO(buffer);
975 1 temp = *buffer;
976 1 switch (temp)
977 1 {
978 2 case 0x00 :
979 2 //break;
980 2 return(FM1715_NOTAUTHERR); //暂时屏蔽掉写错误
981 2 case 0x04:
982 2 return(FM1715_EMPTY);
983 2 case 0x0a:
984 2 break;
985 2 case 0x01:
C51 COMPILER V7.09 FM1715 07/26/2005 17:00:30 PAGE 17
986 2 return(FM1715_CRCERR);
987 2 case 0x05:
988 2 return(FM1715_PARITYERR);
989 2 default:
990 2 return(FM1715_RESTERR);
991 2 }
992 1
993 1
994 1 for (i = 0; i < 4; i++)
995 1 buffer[i] = 0x00;
996 1
997 1 temp = Command_Send(4, buffer, Transmit);
998 1 if (temp == FALSE)
999 1 {
1000 2 return FM1715_RESTERR;
1001 2 }
1002 1
1003 1 return FM1715_OK;
1004 1 }
1005
1006
1007 /****************************************************************/
1008 /*名称: MIF_Transfer */
1009 /*功能: 该函数实现 MIFARE 卡电子钱包保存操作 */
1010 /*输入: Block_Adr: 块地址 */
1011 /*输出: FM1715_NOTAGERR: 无卡 */
1012 /* FM1715_BYTECOUNTERR: 接收字节错误 */
1013 /* FM1715_NOTAUTHERR: 未经权威认证 */
1014 /* FM1715_EMPTY: 数据溢出错误 */
1015 /* FM1715_CRCERR: CRC 校验错 */
1016 /* FM1715_PARITYERR: 奇偶校验错 */
1017 /* FM1715_TRANSERR: 卡片恢复,备份操作失败 */
1018 /* FM1715_OK: 应答正确
1019 */
1020 /****************************************************************/
1021 uchar MIF_Transfer(uchar Block_Adr)
1022 {
1023 1 uchar temp;
1024 1 CRCPresetLSB = 0x63;
1025 1 CWConductance = 0x3f;
1026 1 ChannelRedundancy = 0x07;
1027 1 buffer[0] = RF_CMD_TRANSFER;
1028 1 buffer[1] = Block_Adr;
1029 1 temp = Command_Send(2, buffer, Transceive);
1030 1 if (temp == FALSE)
1031 1 {
1032 2 return FM1715_NOTAGERR;
1033 2 }
1034 1 temp = FIFO_Length;
1035 1 if (temp == 0)
1036 1 {
1037 2 return FM1715_BYTECOUNTERR;
1038 2 }
1039 1 Read_FIFO(buffer);
1040 1 temp = *buffer;
1041 1 switch (temp)
1042 1 {
1043 2 case 0x00 :
1044 2 //break;
1045 2 return(FM1715_NOTAUTHERR); //暂时屏蔽掉写错误
1046 2 case 0x04:
1047 2 return(FM1715_EMPTY);
C51 COMPILER V7.09 FM1715 07/26/2005 17:00:30 PAGE 18
1048 2 case 0x0a:
1049 2 return(FM1715_OK);
1050 2 case 0x01:
1051 2 return(FM1715_CRCERR);
1052 2 case 0x05:
1053 2 return(FM1715_PARITYERR);
1054 2 default:
1055 2 return(FM1715_TRANSERR);
1056 2 }
1057 1 }
1058
1059
1060
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2922 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 66 ----
IDATA SIZE = 88 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -