📄 sam.h
字号:
/****************************************************************************
*
* File: SAM.H(SAM CARD)
*
* Created: 2003.1.20
*
* Editor JOHN CHENG
*
* Compiler: KEIL C51 V7.00
*
* Description:
*
*****************************************************************************
*
* Version | Date | PCB | Description
* --------+----------+-------+------------------------------------------------
* V100 | 25/12/02 | 00.01 | Initial version,TypeA and TypeB
* V110 | 15/01/03 | 00.02 | 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
****************************************************************************/
//define SAM card message //
#define inf_SAMerr 0x09 //SAM card reply error.
#define inf_nSAM 0x0A //Not SAM card reply
//-------------------------------------------------------------------------------------------------
//Below define is SAM command code(0x70-0x7F)
//-------------------------------------------------------------------------------------------------
#define CMD_SAM_ATR 0x70 //Answer to reset
#define CMD_SetBaudrateSAM 0x71 //Set SAM card baudrate
#define CMD_SAM_Gen 0x72 //Send generic command to SAM card
#define CMD_Generic_T0 0x73
//FIFO Control register (write only) for 16550 UART
#define Enable_XMIT_RCVR 1 //Enable FIFO
#define MDA_Mode 8 //set TXD & RXD pins to 1
#define RCVR_RST 2 //Reset reciver buffer counter
#define XMIT_RST 4 //Reset transmiter buffer counter
#define RCVR_T_1 0 // 1 byte triger
#define RCVR_T_4 0x40 // 4 bytes triger
#define RCVR_T_8 0x80 // 8 bytes triger
#define RCVR_T_14 0xC0 // 14 bytes triger
//To select SAM or Inside reader refer from cSAM_I and cSAM_O pin
/*---------------------------------------------------------------------------------------------------------
cSAM_I | cSAM_O | Selected
-----------------------------------------------------------------------------------------------------------
0 | 0 | Inside received and transmited
0 | 1 | Inside + SAM received
1 | 0 | SAM transmit
1 | 1 | SAM Transmit and received. NOT used this because SAM TX and RX connet together
---------------------------------------------------------------------------------------------------------*/
sbit cSAM_I=P1^4;
sbit cSAM_O=P1^5;
//extern byte SLE_authenticate(byte *UID,byte KEY_page,byte Value_page);
extern unsigned char SLE_authenticate(unsigned char KEY_page,unsigned char CNT_page, unsigned char Key_number);
extern unsigned char T1ExchangeAPDU(unsigned char LEN, unsigned char *Buffer);
extern unsigned char SLE_authenticate_1(unsigned char KEY_page,unsigned char Value_page);
extern unsigned char inf_Authenticate(unsigned char pAddress,unsigned char KeyADR,unsigned char *Buffer);
extern unsigned char inf_Authen_Sequence_B1(unsigned char *Buffer);
extern unsigned char inf_Authenticate_A(unsigned char pAddress,unsigned char KeyADR,unsigned char *Buffer);
extern unsigned char inf_Read_mac(unsigned char pAddress,unsigned char *Buffer);
extern unsigned char SLE_Read(unsigned char pAddress,unsigned char number_mode,unsigned char *Buffer);
extern unsigned char SLE_Write(unsigned char pAddress,unsigned char number_mode,unsigned char *Buffer);
extern void RF_Field(unsigned char mode);
extern unsigned char SLE_RestrictWrite(unsigned char pAddress,unsigned char number_mode,unsigned char *Buffer);
extern unsigned char SLE_WriteRead(unsigned char pAddress,unsigned char number_mode,unsigned char *Buffer);
extern unsigned char SLE_ResWriteRead(unsigned char pAddress,unsigned char number_mode,unsigned char *Buffer);
extern void TransmitToSAM(unsigned char length,unsigned char *buffer);
extern void Seq_SAM(unsigned char length);
extern unsigned char EnableSAM_Receive(void);
//Rountine from SAM_GenericCmd.C
extern unsigned char SAM_GenericCmd(unsigned char LRC_Flag, unsigned char length, unsigned char *buffer);
//Rountine form SLE_GenericCmd.C
extern unsigned char SLE_GenericCmd(unsigned char CRC_flag, unsigned char length, unsigned char *buffer);
extern unsigned char GetBytes(unsigned char _cl);
extern unsigned char GetByte(void);
extern unsigned char Sam_Command(unsigned char _len,unsigned char *buffer);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -