⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fm1715.lst

📁 fm1702 13.56m rfid 读卡程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -