📄 fm1715_fun.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 + -