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