lll_msr.h

来自「非接触式M1卡读写器,读写源程序,可读S50/S70的卡」· C头文件 代码 · 共 176 行

H
176
字号
#ifdef __SRC
 #define EXTERN
#else
 #define EXTERN extern
#endif


// Common Defines

#define uchar                   unsigned char
#define uint                    unsigned int
#define ulong                   unsigned long


typedef struct _KEY { uchar _key[6]; } KEY;


// Global Prototypes

EXTERN uchar mifs_request(uchar _Mode, uchar idata *_TT);
EXTERN uchar mifs_anticoll(uchar _Bcnt, uchar idata *_SNR);
EXTERN uchar mifs_select(uchar idata *_SNR, uchar idata *_Size);
EXTERN uchar mifs_authentication(uchar _Mode, uchar _SecNr);
EXTERN uchar mifs_authentication_2(uchar _Mode, uchar _KeyNr, uchar _Address);
EXTERN uchar mifs_halt(void);
EXTERN uchar mifs_read(uchar _Adr, uchar idata *_Data);
EXTERN uchar mifs_write(uchar _Adr, uchar idata *_Data);
EXTERN uchar mifs_increment(uchar _Adr, uchar idata *_Value);
EXTERN uchar mifs_decrement(uchar _Adr, uchar idata *_Value);
EXTERN uchar mifs_decrement_transfer(uchar _Adr, uchar idata *_Value);
EXTERN uchar mifs_restore(uchar _Adr);
EXTERN uchar mifs_transfer(uchar _Adr);
EXTERN uchar mifs_load_key(uchar _Mode, uchar _SecNr, KEY *_TK, KEY *_NK);
EXTERN void  mifs_reset(uchar idata *_Msec);
EXTERN void  mifs_set_control_bit(uchar _Byte);
EXTERN void  mifs_clr_control_bit(uchar _Byte);
EXTERN void  mifs_config(uchar _Mode, uchar _Baud);

EXTERN void  idle_mifs_request(void);


// Hardware Addresses of the MFSLS1x2-ASIC

#ifdef __SRC
volatile uchar xdata MCM_DATA      _at_ 0x8000;
volatile uchar xdata MCM_STACON    _at_ 0x8001;
volatile uchar xdata MCM_ENABLE    _at_ 0x8002;
volatile uchar xdata MCM_BCNTS     _at_ 0x8003;
volatile uchar xdata MCM_BCNTR     _at_ 0x8004;
volatile uchar xdata MCM_BAUDRATE  _at_ 0x8005;
volatile uchar xdata MCM_TOC       _at_ 0x8006;
volatile uchar xdata MCM_MODE      _at_ 0x8007;
volatile uchar xdata MCM_CRCDATA   _at_ 0x8008;
volatile uchar xdata MCM_CRCSTACON _at_ 0x8009;
volatile uchar xdata MCM_KEYDATA   _at_ 0x800A;
volatile uchar xdata MCM_KEYSTACON _at_ 0x800B;
volatile uchar xdata MCM_KEYADR    _at_ 0x800C;
volatile uchar xdata MCM_RCODE     _at_ 0x800E;
#else
extern volatile uchar xdata MCM_DATA;
extern volatile uchar xdata MCM_STACON;
extern volatile uchar xdata MCM_ENABLE;
extern volatile uchar xdata MCM_BCNTS;
extern volatile uchar xdata MCM_BCNTR;
extern volatile uchar xdata MCM_BAUDRATE;
extern volatile uchar xdata MCM_TOC;
extern volatile uchar xdata MCM_MODE;
extern volatile uchar xdata MCM_CRCDATA;
extern volatile uchar xdata MCM_CRCSTACON;
extern volatile uchar xdata MCM_KEYDATA;
extern volatile uchar xdata MCM_KEYSTACON;
extern volatile uchar xdata MCM_KEYADR;
extern volatile uchar xdata MCM_RCODE;
#endif


// MIFARE1 Hardware Functions

#define _REQUEST                0x26
#define _REQUEST_ALL            0x52
#define _REQUEST_TEST           0x0F


// Lowest-Level Defines

// STACON

#define _DV                     0x80
#define _TE                     0x40
#define _PE                     0x20
#define _CE                     0x10
#define _BE                     0x08
#define _AE                     0x04

#define _SOR                    0x80
#define _RFS                    0x40
#define _MI1                    0x04
#define _NRF                    0x02
#define _AC                     0x01


// ENABLE

#define _PEN                    0x80
#define _PRE                    0x40
#define _CEN                    0x20
#define _CRE                    0x10


// KEYSTACON

#define _AL                     0x80
#define _S                      0x40
#define _DKL                    0x10
#define _KS0                    0x00
#define _KS1                    0x01
#define _KS2                    0x02
#define _TRAN                   0x03


// KEYADR

#define _AUTH                   0x80
#define _LOAD                   0x00
#define _KEYB                   0x40
#define _KEYA                   0x00


// Error Codes

#define OK                      0
#define W_NOTAG                 1
#define W_CRC                   2
#define W_EMPTY                 3
#define W_AUTH                  4
#define W_PARITY                5
#define W_CODE                  6
#define W_SERNR                 8
#define W_NOTAUTH               10
#define W_BITCNT                11
#define W_BYTECNT               12
#define W_TRANS                 14
#define W_WRITE                 15
#define W_INCR                  16
#define W_DECR                  17
#define W_READ                  18
#define QUIT                    30

#define MIS_CHK_OK              0
#define MIS_CHK_FAILED          1
#define MIS_CHK_COMPERR         2

#define W_VERIFY                19

#define W_CMD_NY_IMPL           100

// Helpful Defines

#define IDLE                    0x00
#define ALL                     0x01
#define EVER                    0x80

#define KEYB                    0x04
#define KEYA                    0x00
#define KEYSET0                 0x00
#define KEYSET1                 0x01
#define KEYSET2                 0x02
#define KEYS                    0x03


#undef EXTERN


/***************************************************************************/

⌨️ 快捷键说明

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