?? 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 + -