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

📄 reader.h

📁 很强的射频卡reader源代码
💻 H
字号:
/****************************************************************************
*                                                                           
* File:         READER.H(HEADER for all file)                                   
*                                                                           
* Created:      2002.12.25                                                    
*                                                                           
* Editor        JOHN CHENG
*                                                                           
* Compiler:     KEIL C51 V7.00                                              
*                                                                           
* Description:                 
*                                                                           
*****************************************************************************
*                                                                           
* Version | Date     |  PCB  | Description                                          
* --------+----------+-------+------------------------------------------------ 
* V100    | 25/12/02 |       | Initial version,TypeA and TypeB 
* V110    | 15/01/03 |       | reset pin control by FIFO out pins.Adding two new command
*         |          |       | (READ EEPROM C6 and WRITE EEPROM C7).
*         |          |       | delay using a fixed time,not "for loop".
*         |          |       | New routine funtions is generated in main funtion.
* V120    | 20/01/03 |       | Modify reader.h,adding rc500cmd.h            	    
* V130    | 08/02/03 |       | Adding some funtions about SAM
****************************************************************************/
//#include <SST89x5x4.H>
#include <STC89C516.h>
#include <absacc.h>
/*********************************************************************************************************/
						   
#define 	MCTYPE		CV5600S

#define 	CV5600			1		
#define 	CV5600S			2		
#define 	CV5500			3		
#define 	CV5100			4		

#define     desfire_mode	1

sbit Wei_D0		= P1^3;
sbit Wei_D1		= P1^4;
sbit CP			= P1^2;
sbit LCD_PWR	= P1^5;
sbit LED_G		= P1^6;
sbit LED_R		= P3^5;
sbit Buzzer		= P1^7;

sbit RS485      = P3^2;		//485 CTRL 
sbit RST		= P3^3;		//For reset the rc500 chip
sbit LCDRS		= P3^4;
//sbit LCDEA		= P3^5;

sbit OutputPort0=P1^6;
sbit OutputPort1=P1^6;
//sbit OutputPort2=P1^2;

//#define CP		 OutputPort2
#define CLOCK	 Wei_D1
#define DATA	 Wei_D0



/********************/
/*   液晶模块定义   */
/* 适用于所有字符型 */
/********************/
//#define LCDPort1    P0
//#define wi		XBYTE[LCDPort1]	
//#define wd		XBYTE[LCDPort1 + 1]	
//#define ri		XBYTE[LCDPort1 + 2]	
//#define rd		XBYTE[LCDPort1 + 3]	


//#define LcdRS							XBYTE[0x7c00]
//#define LcdRW							XBYTE[0x7c01]
//#define LCDEA                               P05
#define Write								0
#define Read								1
#define LcdData						        1
#define LcdCommand					        0
#define LcdPort							    P0
#define ClrLcd 						        0x01    //清屏命令
#define RetLcd                              0x02    //返回命令
#define AdrAdd							    0x06
#define CloseCur					        0x0c
#define OpenCurB						    0x0f
#define OpenCur						        0x0e

extern void InitLcd(void); 
extern void DisplayLcd (unsigned char *disptext, unsigned char TextLen, unsigned char LcdAddress);

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


/********************************************************************************************************/
extern unsigned char SecondCNT;
extern void weigand_26(unsigned char *wei_data);
extern void weigand(void);
extern void TxOut(unsigned char length, unsigned char status,unsigned char *datas);
extern void Initialwiegand(void);
extern void SendNumber(unsigned char length, unsigned char *datas);
extern void KeyBuffer_Manage(void);

extern unsigned char pro_weigen(unsigned char *outbuf);

//**********
#define  	ON   0
#define  	OFF  1
#define   	HIGH  0
#define   	LOW   1

//The follow register for watchdog timer and EEPROM control register
sfr	 WDTC	=	0xC0;
sbit WDOUT	= WDTC^4;
sbit WDRE	= WDTC^3;
sbit WDTS	= WDTC^2;
sbit WDT	= WDTC^1;
sbit SWDT	= WDTC^0;
sfr16 	DPTR	=	0x82;


/**********************************************************************************************************
// COMMUNITION
/**********************************************************************************************************/
/*define control code of communication*/
#define STX  0x02
#define ETX  0x03
//---------------------------------------------------------------------------------------------------------
//The function for communication host
extern void			 InitialUART(unsigned char BaudRate); //9600bps=1; 19200bps=2; 38400bps=3; 57600bps=4;115200bps=5
extern void			 CommPC(void);                 //Interrupt communication handle
extern void			 CheckControlCode(unsigned char value); //If transmit data matched control code inserted DLE 
//extern void			 FunACK(void);
//extern void			 FunNAK(void);
extern void			 ReturnStatus(unsigned char status);
extern void			 StartTransmit(void);
extern void			 EndTransmit(void);
extern bit 			 WaitTxBufferEmpty(void);       //For checking transmit buffer 
extern void			 delay(unsigned char time);
extern void 		 InitialSetup(void);          //This routine at load.asm
extern unsigned char SetAddress(unsigned char Address);    //This routine at load.asm 
extern unsigned char SetBaudrateMCU(unsigned char baudrate);
extern unsigned char SetBaudrateSAM(unsigned char baudrate);
extern unsigned char SetSerialNum(int location, unsigned char *Number);
extern unsigned char CaulaBCC(void);
extern void			 DecodeCMD_Buzzer(unsigned char mode,unsigned char *buffer);
extern unsigned char GetPortStatus(unsigned char SelectPort);
extern void KeyBuffer_Manage(void);


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

/*********************************************************************************************************
//  Error/Status Codes
/*********************************************************************************************************/
//System Error/Status Codes(0x00-0x0F)
#define inf_ACK     0x00	//COMMAND OK
#define OutRange    0x01    //The input value out of range
#define TMO_ERR	    0x04	//Reader reply time out error
//#define SEQ_ERR	  0x05	//Communication Sequence Number out of order
#define CHKSUM_ERR	0x07	//Communication Check Sum Error
#define CMD_Err     0x06    //Receiced error command
#define INTR_ERR	0x08    //Unknown Internal Error ;only reset use
#define Fail        0x0B    //The prograss fail
//--------------------------------------------------------------------------------------------------------
//Card Error/Status Codes(0x10-0x1F)
#define inf_nCard   0x11    //No card detected ;Not tag card reply
#define CRC_ERR	    0x12	//Wrong CRC received from card
#define PARITY_ERR	0x13	//Wrong Parity Received from card
#define BITCNT_ERR	0x14	//Wrong number of bits received from the card
#define BYTECNT_ERR	0x15    //Wrong number of bytes received from the card;
#define BlockLocked_ERR 0x17 //15693 Wrong with that the block has been locked and cannot write the value and cannot lock again	
#define inf_NACK    0x16    //Any other error happened when communicate with card//Tag card error
#define Command_unsurport        0x18 //15693 the command to the card donot surport
#define	Commandformat_err	      0x19 //15693 the command format is wrong
#define	Option_unsurport	      0x1A //15693 the Option flag donot surport
#define	Unkown_err			      0x1B //15693 unkown error
#define	Block_notexist 		  0x1C //15693 the masked bilock donot exist
#define Block_lockunsucess    0x1D //
//---------------------------------------------------------------------------------------------------------
//MIFARE Error/Status Codes(0x20-0x2F)
#define  MF_AUTHERR	    0x20	//No Authentication Possible
#define  MF_SERNRERR	0x21	//Wrong Serial Number read during Anti-collision.
#define  MF_NOAUTHERR	0x22	//Card is not authenticated
#define  MF_VAL	        0x24	//Any problem with the VALUE related function
//---------------------------------------------------------------------------------------------------------



extern unsigned char flashpw(int d_address,char *s_address,unsigned char length);

/**********************************************************************************************************
// FUNTION DEFINE
/*********************************************************************************************************/
extern unsigned char getrc500EEPROM(unsigned short Address);

extern unsigned char CheckSerialNum(void);

//The main program function call
extern void Initial(void);                          //For initial MCU  

//The function routine for IO status control
extern bit  TriggerPort(unsigned char SelectPort,unsigned char time);
extern void CheckTimeOutIO(void);
extern bit  SetPortActive(unsigned char SelectPort);
extern bit  CloseIO(unsigned char SelectPort);       //Close door lock.

//The function routine for IO control LED and Buzzer
extern bit  DecodeToggleLED(unsigned char *buffer);
extern bit  SetLED_Active(unsigned char SelectLED);
extern bit  OFF_LED(unsigned char SelectLED);
extern bit  C_Ext(unsigned char timelen);

//The funtion routine for delay
extern void delay_50us_NOP(void);
extern void delay_50us(unsigned char _50us);
extern void delay_1ms(unsigned char _1ms);

//extern routine at load.asm
//extern void LoadProgram(void);

extern void RF_MfExternalInOut(void);
extern void RF_MfInternal(void);

/*******************************************************************************************************/ 
#define MaxRxd       150   //210      /*unit of byte for PC UART used */
#define MaxTxd       150   //210      /*unit of byte for PC UART transmit used */
#define C_UART_TimeOut  4       /*unit of 10ms, min 10-20ms refer to timer 0*/
extern unsigned char cmd_buffer[64];
extern unsigned char card_buffer[64];
//struct uart_Host
//{
// unsigned char  RxBuffer[MaxRxd];      /*Used for PC communication receiver buffer */
// unsigned char  TxBuffer[MaxTxd];      /*The buffer for PC communication transmited used */
//};
//extern xdata struct uart_Host Host;
  
extern union union1
{
  struct uart_host
  {
    unsigned char  TxBuffer[MaxTxd];      /*The buffer for PC communication transmited used */
    unsigned char  RxBuffer[MaxRxd];      /*Used for PC communication receiver buffer */
  } host;
  struct desstr
  {      
		unsigned char bufout[64];
		unsigned char kwork[56];
		unsigned char worka[48];
		unsigned char kn[48];
		unsigned char buffer[64];
		unsigned char key[64];
  }des_str;
  unsigned char IAPbuffer[128];
}u_ram;

extern bit	WeiGendEM_flag;
				

⌨️ 快捷键说明

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