📄 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 + -