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

📄 mfcm200b.h

📁 方便您开发读卡器
💻 H
字号:

//------------------------------------------------------------------------------
// File:         MFCM200B.h (Header for MFCM200B.lib)
// Compiler:     KEIL C51 COMPILER V6.23a
//------------------------------------------------------------------------------

#pragma SAVE
#pragma REGPARMS


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

#define TRUE	1
#define FALSE	0

//------------------------------------------------------------------------------
// MFCM200B 状态字(函数返回值)定义

#define MI_OK			0x00
#define MI_NOTAG		0x01
#define MI_CRC			0x02
#define MI_EMPTY		0x03
#define MI_AUTH			0x04
#define MI_PARITY		0x05
#define MI_CODE			0x06
#define MI_SERNR		0x08
#define MI_NOTAUTH		0x10
#define MI_BITCNT		0x11
#define MI_BYTECNT		0x12
#define MI_TRANS		0x14
#define MI_WRITE		0x15
#define MI_INCR			0x16
#define MI_DECR			0x17
#define MI_READ			0x18
#define MI_POLLING		0x20
#define MI_CHK_OK		0x00
#define MI_CHK_FAILED		0x21
#define MI_CHK_COMPERR		0x22

#define READER_ERR_BASE_START   0
//#define MI_OK                   0
//#define MI_CHK_OK               0
#define MI_CRC_ZERO             0
#define MI_CRC_NOTZER           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 MI_SAKERR                       (125)
#define MI_CONFIGERR                    (126)


#define KEYA			0x00
#define KEYB			0x40
#define KEYSET0			0x00
#define KEYSET1			0x01
#define KEYSET2			0x02
#define KEYSETx			0x03

#define HF			0x40
#define CRC8			0x80
#define CRC16			0x00

#define AUTH_MODE_KEYA		0x00
#define AUTH_MODE_KEYB		0x01

//------------------------------------------------------------------------------
// MFCM200B 寄存器地址定义
// 外部存储器 采用数据线地址线复用方式 占用8个地址空间
// MFCM200B 基地址由片选信号确定

#define XBYTE ((unsigned char volatile *) 0x20000L)

#define         BASEADR         0x7F00

#define 	RegNo0          XBYTE[BASEADR + 0]
#define         RegNo1          XBYTE[BASEADR + 1]
#define         RegNo2          XBYTE[BASEADR + 2]
#define         RegNo3          XBYTE[BASEADR + 3]
#define         RegNo4          XBYTE[BASEADR + 4]
#define         RegNo5          XBYTE[BASEADR + 5]
#define         RegNo6          XBYTE[BASEADR + 6]
#define         RegNo7          XBYTE[BASEADR + 7]

//------------------------------------------------------------------------------
// 变量定义
// 卡序列号 卡片类型

extern unsigned char data _SNR[5],_TT[2],_SIZE;


//------------------------------------------------------------------------------
// 函数声名
//------------------------------------------------------------------------------

// 初始化 MFCM200B
extern unsigned char mif_Initialize(void);

//------------------------------------------------------------------------------
// 以下为 MFCM200B 高级函数

extern unsigned char HL_FindCard(void);
extern unsigned char HL_HaltCard(void);

extern unsigned char HL_Read(unsigned char byBlock, unsigned char byMode, unsigned char idata *pKeyBuf, unsigned char idata *pbyBuf);
extern unsigned char HL_Write(unsigned char byBlock, unsigned char byMode, unsigned char idata *pKeyBuf, unsigned char idata *pbyBuf);
       
extern unsigned char HL_Increase(unsigned char byBlock, unsigned char byMode, unsigned char idata *pKeyBuf, unsigned long dwValue);
extern unsigned char HL_Decrease(unsigned char byBlock, unsigned char byMode, unsigned char idata *pKeyBuf, unsigned long dwValue);
extern unsigned char HL_Restore(unsigned char byBlockDst, unsigned char byBlockSrc, unsigned char byMode, unsigned char idata *pKeyBuf);

//------------------------------------------------------------------------------
// 以下为 MFCM200B 底层硬件操作基本函数

extern unsigned char mif_config(unsigned char mode, unsigned char baud);
extern unsigned char mif_request(unsigned char mode);
extern unsigned char mif_anticoll(unsigned char bcnt);
extern unsigned char mif_select(void);
extern unsigned char mif_load_key(unsigned char mode, unsigned char bySection, unsigned char idata *pNK);
extern unsigned char mif_authentication(unsigned char mode, unsigned char bySection);
extern unsigned char mif_read(unsigned char byBlock, unsigned char idata *pData);
extern unsigned char mif_write(unsigned char byBlock, unsigned char idata *pData);
extern unsigned char mif_increment(unsigned char byBlock, unsigned long dwValue);
extern unsigned char mif_decrement(unsigned char byBlock, unsigned long dwValue);
extern unsigned char mif_restore(unsigned char byBlock);
extern unsigned char mif_transfer(unsigned char byBlock);
extern unsigned char mif_halt(void);

//------------------------------------------------------------------------------

extern void delayUs(unsigned long usec);
extern void delayMs(unsigned long msec);

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------

#pragma RESTORE


⌨️ 快捷键说明

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