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

📄 fm1715.lst

📁 内容有FM1702对非接触IC卡的读写程序
💻 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          /****************************************************************/
 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 + -