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

📄 fm1715_fun.c

📁 复旦FM1702源码,完整资料,已经编译通过.复旦FM1702的资料几乎就是RC500英文的翻译版
💻 C
字号:
#include <reg52.h>
#include <absacc.h>
#include "FM1715_reg.h"
#include "FM1715.h"

/****************************************************************/
/*名称: HL_Active	                                        */
/*功能:  该函数实现高级 MIFARE 卡激活命令	*/
/*输入: Secnr:  扇区号	                                */
/*	Block_Adr:  块地址	                                    */
/*	    */
/*输出:  操作状态码	                                                               
   */	
/*	读出数据存于 buffer 中	                                                */	
/****************************************************************/
uchar HL_Active(uchar Block_Adr,uchar Mode)
{
   	uchar  temp;

	Secnr = Block_Adr/4;							//?????????

	MIF_Halt();                                     //Halt 
	temp = Request(RF_CMD_REQUEST_STD);				//Request 
	if(temp != FM1715_OK)
    {
		return(FM1715_REQERR);
    }

    temp  =  AntiColl();	                        //AntiCol 
	if(temp != FM1715_OK)
    {
		return(FM1715_ANTICOLLERR);
    }

    temp  =  Select_Card();	                        //Select 
	if(temp != FM1715_OK)
    {
		return(FM1715_SELERR);
    }
    Load_key_CPY();              					//LoadKey

	temp = Authentication(UID, Secnr, Mode);		//Authentication 
	if(temp != FM1715_OK)
    {
    	return(FM1715_AUTHERR);
    }

    return  FM1715_OK;
}



/****************************************************************/
/*名称: MIF_Initival                                            */
/*功能:  该函数实现 MIFARE 卡初始化值操作	*/
/*输入: buff:  四个字节初始化数值起始地址	                              */	
/*      Block_Adr:  块地址                                       */
/*输出: FM1715_NOTAGERR:  无卡	*/
/*	FM1715_BYTECOUNTERR:  接收字节错误	                              */	
/*	FM1715_NOTAUTHERR:  未经权威认证                                      */	
/*	FM1715_EMPTY:  数据溢出错误	                                          */	
/*	FM1715_CRCERR:  CRC 校验错	                                          */	
/*	FM1715_PARITYERR:  奇偶校验错	                                    */	
/*	FM1715_WRITEERR:  写卡块数据出错                                      */	
/*	FM1715_OK:  应答正确                                                        
*/	
/****************************************************************/
uchar MIF_Initival(uchar idata *buff,uchar Block_Adr)
{
	uchar idata temp;
    uchar  i;

	for (i = 0; i < 4; i++)
    {
		*(buff + 4 + i)=~(*(buff + i));
    }
	for (i = 0; i < 4; i++)
    {
		*(buff + 8 + i)=*(buff + i);
    }
	*(buff + 12) = Block_Adr;
	*(buff + 13) = ~Block_Adr;
	*(buff + 14) = Block_Adr;
	*(buff + 15) = ~Block_Adr;
	temp = MIF_Write(buff, Block_Adr);
    return  temp;
}



/****************************************************************/
/*名称: HL_Read                                                 */
/*功能:  该函数实现高级读命令	            */
/*输入: Secnr:  扇区号	                                */
/*	Block_Adr:  块地址	                                                      */	

/*输出:  操作状态码	                                                               
   */	
/*	读出数据存于 buffer 中	                                                */	
/****************************************************************/
uchar HL_Read(uchar idata *buff,uchar Block_Adr,uchar Mode)
{
    uchar  temp;

	temp = HL_Active(Block_Adr, Mode);
	if(temp != FM1715_OK)
    {
		return  temp;
    }

    //Read
	temp = MIF_READ(buff,Block_Adr);
	if(temp != FM1715_OK)
    {
		return  temp;
    }
    

	return  FM1715_OK;
}


/****************************************************************/
/*名称: HL_Write                                                */
/*功能:  该函数实现高级写命令	            */
/*输入: buff:  待写入数据的首地址	                                          */	
/*	Secnr:  扇区号	                                */
/*	Block_Adr:  块地址	                                                      */	

/*输出:操作状态码	                                                                 
 */	
/****************************************************************/
uchar HL_Write(uchar idata *buff,uchar Block_Adr,uchar Mode)
{
	uchar  temp;

	temp = HL_Active(Block_Adr, Mode);
	if(temp != FM1715_OK)
    {
		return  temp;
    }

	//Write
	temp = MIF_Write(buff, Block_Adr);
	if(temp != FM1715_OK)
    {
		return  FM1715_WRITEERR;
    }
    return  FM1715_OK;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -