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

📄 rc500.h

📁 M64+MF RC500 程序从初始配置 -- 寻卡 -- 防冲突 -- 选卡 -- 密码验证 -- 读卡 --- 写卡
💻 H
字号:
#ifndef __rc500_h__
#define __rc500_h__

/********************常用操作定义************************************/
#define _BV(X)  (1 << (X))
#define CHAE    char
#define BYTE 	unsigned char
#define WORD 	unsigned int
#define DWORD 	unsigned long
#define int8	signed char
#define uint8	unsigned char
#define int16	signed int
#define uint16	unsigned int
#define int32	signed long
#define uint32 	unsigned long

/********************RC500引脚步宏定义****************/
#define DDR_RC500RST()   DDRE  |=  (1<<7)
#define SET_RC500RST()   PORTE |=  (1<<7)
#define CLR_RC500RST()   PORTE &= ~(1<<7)

#define DDR_RC500IRQ()   DDRE &= ~(1<<6)
#define PIN_RC500IRQ()   PINE &   (1<<6)

#define DDR_RC500CS()    DDRC  |=  (1<<1)
#define SET_RC500CS()    PORTC |=  (1<<1)
#define CLR_RC500CS()    PORTC &= ~(1<<1)

/********************RC500命令宏定义*****************/
#define     RegPage               0x00
#define     RegCommand            0x01
#define     RegFIFOData           0x02
#define     RegPrimaryStatus      0x03
#define     RegFIFOLength         0x04  
#define     RegSecondaryStatus    0x05  
#define     RegInterruptEn        0x06  
#define     RegInterruptRq        0x07  
#define     RegControl            0x09  
#define     RegErrorFlag          0x0A  
#define     RegCollPos            0x0B  
#define     RegTimerValue         0x0C  
#define     RegCRCResultLSB       0x0D  
#define     RegCRCResultMSB       0x0E  
#define     RegBitFraming         0x0F  
#define     RegTxControl          0x11  
#define     RegCwConductance      0x12
#define     RFU13                 0x13
#define     RegCoderControl       0x14
#define     RegModWidth           0x15
#define     RFU16                 0x16
#define     RFU17                 0x17
#define     RegRxControl1         0x19 
#define     RegDecoderControl     0x1A 
#define     RegBitPhase           0x1B 
#define     RegRxThreshold        0x1C 
#define     RFU1D                 0x1D  
#define     RegRxControl2         0x1E  
#define     RegClockQControl      0x1F  
#define     RegRxWait             0x21   
#define     RegChannelRedundancy  0x22   
#define     RegCRCPresetLSB       0x23   
#define     RegCRCPresetMSB       0x24   
#define     RFU25                 0x25  
#define     RegMfOutSelect        0x26  
#define     RFU27                 0x27  
#define     RegFIFOLevel          0x29  
#define     RegTimerClock         0x2A  
#define     RegTimerControl       0x2B  
#define     RegTimerReload        0x2C  
#define     RegIRqPinConfig       0x2D  
#define     RFU2E                 0x2E   
#define     RFU2F                 0x2F   
#define     RFU31                 0x31  
#define     RFU32                 0x32  
#define     RFU33                 0x33
#define     RFU34                 0x34
#define     RFU35                 0x35
#define     RFU36                 0x36
#define     RFU37                 0x37
#define     RFU39                 0x39
#define     RegTestAnaSelect      0x3A  
#define     RFU3B                 0x3B  
#define     RFU3C                 0x3C  
#define     RegTestDigiSelect     0x3D  
#define     RFU3E                 0x3E  
#define     RegTestDigiAccess     0x3F
#define     DEF_FIFO_LENGTH       64  
#define     PCD_IDLE              0x00 
#define     PCD_WRITEE2           0x01 
#define     PCD_READE2            0x03 
#define     PCD_LOADCONFIG        0x07
#define     PCD_LOADKEYE2         0x0B 
#define     PCD_AUTHENT1          0x0C 
#define     PCD_CALCCRC           0x12 
#define     PCD_AUTHENT2          0x14 
#define     PCD_RECEIVE           0x16 
#define     PCD_LOADKEY           0x19 
#define     PCD_TRANSMIT          0x1A
#define     PCD_TRANSCEIVE        0x1E 
#define     PCD_RESETPHASE        0x3F
#define     PICC_REQIDL           0x26         
#define     PICC_REQALL           0x52         
#define     PICC_ANTICOLL1        0x93         
#define     PICC_ANTICOLL2        0x95        
#define     PICC_ANTICOLL3        0x97         
#define     PICC_AUTHENT1A        0x60        
#define     PICC_AUTHENT1B        0x61         
#define     PICC_READ             0x30      
#define     PICC_WRITE            0xA0     
#define     PICC_DECREMENT        0xC0     
#define     PICC_INCREMENT        0xC1       
#define     PICC_RESTORE          0xC2        
#define     PICC_TRANSFER         0xB0       
#define     PICC_HALT             0x50  

/*********************数据传送结构体宏定义***************************/
#define MI_REQUESTERR   10   //寻卡错误
#define MI_ANTICOLLERR  11   //防冲突错误
#define MI_SELECTERR    12   //选卡错误

#define MI_REQUEST      20   //寻卡成功
#define MI_ANTICOLL     21   //防冲突成功
#define MI_SELECT       22   //选卡成功
 
typedef struct 
         {
            BYTE  cmd;           
            BYTE  status;        
            BYTE  nBytesSent;   
            BYTE  nBytesToSend; 
            BYTE  nBytesReceived;
            WORD  nBitsReceived; 
     		BYTE  CardNumber[5];
            BYTE  SerBuffer[20];                                 
         }MfCmdInfo;
		 
#define ResetInfo(Info)    \
            Info.cmd            = 0;\
            Info.status         = 0;\
            Info.nBytesSent     = 0;\
            Info.nBytesToSend   = 0;\
            Info.nBytesReceived = 0;\
            Info.nBitsReceived  = 0;\

/*********************函数声明***************************************/
void Delay_1us(void);
void Delay_us(uint16 n);
void Delay_1ms(void);
void Delay_ms(uint16 n);
void WriteIO(BYTE Address,BYTE value);
BYTE ReadIO(BYTE Address);
void Device_Init(void);

BYTE M500PcdReset(void); 
BYTE M500PcdConfig(void);
BYTE SetBitMask(BYTE reg,BYTE mask);
BYTE ClearBitMask(BYTE reg,BYTE mask);
BYTE M500PcdRfReset(BYTE val);
BYTE M500PiccCommonRequest(void);
BYTE  M500PcdCmd(void);
BYTE M500PiccCascAnticoll(void);
BYTE M500PiccCascSelect(void);
BYTE M500PcdLoadKeyE2(WORD StartAddr);
BYTE M500PiccHalt(void);
BYTE M500PiccAuthKey(BYTE *KEY,BYTE Sector,BYTE Block);
void M500HostCodeKey(BYTE *uncoded,BYTE *coded);
BYTE M500PiccAuthState(BYTE Block);
BYTE M500PiccRead(BYTE Sector,BYTE Block);
BYTE M500PiccWrite(BYTE Sector,BYTE Block);

#endif

⌨️ 快捷键说明

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