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

📄 m500a.h

📁 Mifare RC500 API Code in Keil
💻 H
字号:
#ifndef M500A_H
#define M500A_H

// P I C C - C O M M A N D S
// commands which are handled by the tag
// Each tag command is written to the reader IC and transfered via RF
#define PICC_REQSTD        0x26			// request idle
#define PICC_REQALL        0x52			// request all
#define PICC_ANTICOLL1     0x93			// anticollision level 1
#define PICC_ANTICOLL2     0x95			// anticollision level 2
#define PICC_ANTICOLL3     0x97			// anticollision level 3
#define PICC_AUTHENT1A     0x60			// authentication step 1
#define PICC_AUTHENT1B     0x61			// authentication step 2
#define PICC_READ          0x30			// read block
#define PICC_WRITE         0xA0			// write block
#define PICC_DECREMENT     0xC0         	// decrement value
#define PICC_INCREMENT     0xC1         	// increment value
#define PICC_RESTORE       0xC2         	// restore command code
#define PICC_TRANSFER      0xB0         	// transfer command code
#define PICC_HALT          0x50			// halt
//////////////////////////////////////////////////////////////////////
// Mifare Error Codes
// Each function returns a status value, which corresponds to the
// mifare error codes. 

#define MI_OK                           0
#define MI_CHK_OK                       0
#define MI_CRC_ZERO                     0

#define MI_CRC_NOTZERO                  1

#define MI_NOTAGERR                     (-1)
#define MI_CHK_FAILED                   (-1)
#define MI_CRCERR                       (-2)
#define MI_CHK_COMPERR                  (-2)
#define MI_EMPTY                        (-3)
#define MI_AUTHERR                      (-4)
#define MI_PARITYERR                    (-5)
#define MI_CODEERR                      (-6)

#define MI_SERNRERR                     (-8)
#define MI_KEYERR                       (-9)
#define MI_NOTAUTHERR                   (-10)
#define MI_BITCOUNTERR                  (-11)
#define MI_BYTECOUNTERR                 (-12)
#define MI_IDLE                         (-13)
#define MI_TRANSERR                     (-14)
#define MI_WRITEERR                     (-15)
#define MI_INCRERR                      (-16)
#define MI_DECRERR                      (-17)
#define MI_READERR                      (-18)
#define MI_OVFLERR                      (-19)
#define MI_POLLING                      (-20)
#define MI_FRAMINGERR                   (-21)
#define MI_ACCESSERR                    (-22)
#define MI_UNKNOWN_COMMAND              (-23)
#define MI_COLLERR                      (-24)
#define MI_RESETERR                     (-25)
#define MI_INITERR                      (-25)
#define MI_INTERFACEERR                 (-26)
#define MI_ACCESSTIMEOUT                (-27)
#define MI_NOBITWISEANTICOLL            (-28)
#define MI_QUIT                         (-30)

#define MI_RECBUF_OVERFLOW              (-50) 
#define MI_SENDBYTENR                   (-51)
	
#define MI_SENDBUF_OVERFLOW             (-53)
#define MI_BAUDRATE_NOT_SUPPORTED       (-54)
#define MI_SAME_BAUDRATE_REQUIRED       (-55)

#define MI_WRONG_PARAMETER_VALUE        (-60)

#define MI_BREAK                        (-99)
#define MI_NY_IMPLEMENTED               (-100)
#define MI_NO_MFRC                      (-101)
#define MI_MFRC_NOTAUTH                 (-102)
#define MI_WRONG_DES_MODE               (-103)
#define MI_HOST_AUTH_FAILED             (-104)

#define MI_WRONG_LOAD_MODE              (-106)
#define MI_WRONG_DESKEY                 (-107)
#define MI_MKLOAD_FAILED                (-108)
#define MI_FIFOERR                      (-109)
#define MI_WRONG_ADDR                   (-110)
#define MI_DESKEYLOAD_FAILED            (-111)

#define MI_WRONG_SEL_CNT                (-114)

#define MI_WRONG_TEST_MODE              (-117)
#define MI_TEST_FAILED                  (-118)
#define MI_TOC_ERROR                    (-119)
#define MI_COMM_ABORT                   (-120)
#define MI_INVALID_BASE                 (-121)
#define MI_MFRC_RESET                   (-122)
#define MI_WRONG_VALUE                  (-123)
#define MI_VALERR                       (-124)

#define GetRegPage(addr)    (0x80 | (addr>>3))

#define nocard			    0
#define mifare1S50		    1
#define mifare1S70  	    2
#define mifarelight		    3
#define unknowncard		    4

// write data to address 写一个数据到某个地址
///////////////////////////////////////////////////////////////////////
 void WriteRawIO(unsigned char Address,unsigned char value);

// read data from address 从某个地址读出一个数据
///////////////////////////////////////////////////////////////////////
 unsigned char ReadRawIO(unsigned char Address);

// write data eeprom 往一个地址写一个数据(EEPROM)
///////////////////////////////////////////////////////////////////////
 void WriteIO(unsigned char Address, unsigned char value);

// read data eeprom 从一个地址读出一个数据(EEPROM)
///////////////////////////////////////////////////////////////////////
 unsigned char ReadIO(unsigned char Address);

// Set pcd time 设置定时时间
///////////////////////////////////////////////////////////////////////
 void M500PcdSetTime(unsigned char timeLength);

// Request Command defined in ISO14443(Mifare) 定义mifare 请求命令
///////////////////////////////////////////////////////////////////////
 char  M500PcdCmd(unsigned char cmd,
               volatile unsigned char data *rcv,
                MfCmdInfo idata *info);

// Set bit 置一个bit
///////////////////////////////////////////////////////////////////////
 char SetBitMask(unsigned char reg,unsigned char mask);  

// Clear bit 清一个bit
///////////////////////////////////////////////////////////////////////
 char ClearBitMask(unsigned char reg,unsigned char mask);

//清除FIFO
///////////////////////////////////////////////////////////////////////
 void FlushFIFO(void);

// Value format operations for Mifare Standard card ICs 操作值设置
///////////////////////////////////////////////////////////////////////
 char M500PiccValue(unsigned char dd_mode, 
                   unsigned char addr, 
                   unsigned char *value,
                   unsigned char trans_addr);

// Set card in HALT-state  终止卡的操作
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// Key loading into the MF RC500's EEPROM
// 校验卡密码(E2)
///////////////////////////////////////////////////////////////////////
 char M500PiccAuthE2( unsigned char auth_mode,unsigned char *snr,      
                     unsigned char keynr,unsigned char block); 
///////////////////////////////////////////////////////////////
// Key loading into the MF RC500's EEPROM
///////////////////////////////////////////////////////////////		            
 char M500PcdLoadKeyE2(unsigned char key_type,
                       unsigned char sector,
                       unsigned char *uncoded_keys);
////////////////////////////////////////////////////////////////
// Read the mifare card
// 读卡
////////////////////////////////////////////////////////////////
 char M500PiccRead(unsigned char addr,unsigned char *_data);
// Write the mifare card
// 写卡  下载密码
////////////////////////////////////////////////////////////////
 char M500PiccWrite( unsigned char addr,unsigned char *_data);
 
 char MfConfig(void);
// Set card in HALT-state  终止卡的操作
///////////////////////////////////////////////////////////////////////
 char M500PiccHalt(void);
// Reset Card 复位卡
///////////////////////////////////////////////////////////////////////
 char M500PcdRfReset(unsigned char ms);
// Authentication key coding
///////////////////////////////////////////////////////////////////////
 char M500HostCodeKey(unsigned char *uncoded, 
                     unsigned char *coded);
// Request Command defined in ISO14443(MIFARE)
// Request
// 寻卡
///////////////////////////////////////////////////////////////////////
 char M500PiccCommonRequest(unsigned char req_code, 
                         unsigned char *atq);
// Cascaded Anti-Collision Command defined in ISO14443(MIFARE)
// 防冲突 读卡的系列号 MLastSelectedSnr
///////////////////////////////////////////////////////////////////
 char M500PiccCascAnticoll( unsigned char bcnt,       
                           unsigned char *snr);   
 char M500PiccCascSelect(unsigned char *snr,
                        unsigned char *sak);      

// Set bit 置一个bit
///////////////////////////////////////////////////////////////////////
 char SetBitMask(unsigned char reg,unsigned char mask); 
// Set pcd time 设置定时时间
///////////////////////////////////////////////////////////////////////                    
 void M500PcdSetTmo(unsigned char tmoLength);
// Request Command defined in ISO14443(Mifare) 定义mifare 请求命令
///////////////////////////////////////////////////////////////////////
 char M500PcdCmd(unsigned char cmd,
                volatile unsigned char data * rcv,
                volatile MfCmdInfo idata *info);
// Clear bit 清一个bit
///////////////////////////////////////////////////////////////////////
 char ClearBitMask(unsigned char reg,unsigned char mask);
//清除FIFO
///////////////////////////////////////////////////////////////////////
 void FlushFIFO(void);
// Write the MF RC500's EEPROM
///////////////////////////////////////////////////////////////////////
 char PcdWriteE2(unsigned int startaddr,
                unsigned char length,
                unsigned char* _data);
//认证状态
///////////////////////////////////////////////////////////////////////
 char M500PiccAuthState(unsigned char auth_mode,
                       unsigned char *snr,    
                       unsigned char block); 
//////////////////////////////////////////////////////////////////////////////

#endif
//////////////////////////////////////////////////////////////////////////////
// End of File
//////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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