www.pudn.com > HS4095.rar > main.h


#include "w78e365.h" 
 
#define uchar unsigned char	 
#define uint unsigned int		  
#define uint32 unsigned long 	 
 
 
#define FWD_CMD_LOGIN   0x4       
#define FWD_CMD_WRITE   0x2 
#define FWD_CMD_READ    0x1 
#define FWD_CMD_DISABLE 0x5 
 
#define	STX	0x02 
#define	ETX	0x03 
 
#define CAPTURE_SIZE (2*11*4)     
 
#define UART_MESSAGE_OK          0x00 
#define ERR_ASIC_ANTENNA_FAULT   0x01 
#define ERR_UART_ERROR_FLAG      0x04 
#define ERR_UART_OVERFLOW        0x05 
#define ERR_UART_WRONG_ICMD      0x06 
#define ERR_UART_BAD_CRC         0x07 
#define ERR_UART_UNKNOWN_CMD     0x08 
#define ERR_UART_NO_ETX          0x09 
#define ERR_UART_INTERBYTE_ERR   0x0A 
#define ERR_EM4469_FLOWLINK_ERR  0x0B 
#define ERR_EM4469_WRONG_DE      0x0C 
#define ERR_EM4469_WRONG_DR      0x0D 
#define ERR_EM4469_PARITY_ERR    0x10 
#define ERR_EM4469_BAD_CONF_DATA 0x11 
#define ERR_EM4469_NACK          0x12 
#define ERR_EM4469_NEITHER_ACK   0x13 
#define ERR_EM4469_NO_VALID_DR   0x14 
#define ERR_EM4469_BAD_RAW       0x15 
//版本,日期控制 
#define READER_RELEASE 0x10   //1.0 
#define READER_YEAR    6   //2006 
#define READER_MONTH   4 
#define READER_DATE    28 
#define READER_FAMILY  90 
 
#define	MAX_RXNUM	15 
uchar xdata rx_buff[MAX_RXNUM];		//单片机接收PC串口数据缓冲区 
uchar xdata tx_buff[MAX_RXNUM];		//单片机发送数据到PC数据缓冲区 
 
uchar check_stat; 
 
uint xdata get_settings_low; 
uint xdata get_settings_hi; 
 
uchar config_encoder;                  
uchar config_data_rate;                
uchar config_delayed;                  
uchar config_lwr;                      
uchar config_raw;   
uchar lwr;                          //last word read 
uchar delayed;                      //delayed value 
 
uchar halfDataRate;                 //half period data rate module 
uchar raw;                          //raw flag to capture read after write response 
 
uchar xdata capture_data[CAPTURE_SIZE];          //maximum bytes captured at once 
uint xdata maxCaptureTimeLow;           //lower part of current maximum capture time (used to initialise TCNT1) 
uchar xdata maxCaptureTimeHi;            //upper part of current maximum capture time (expected value 0xFF or 0xFE only) 
uint xdata read_tag_memory_word_low;      // Read Cmd content low 
uint xdata read_tag_memory_word_hi;       // Read Cmd content hi 
uint xdata maxTRead;                    //current datarate maximum response capture time 
uint xdata maxTLogin;                   //current datarate maximum response capture time 
uint xdata maxTWrite;                   //current datarate maximum response capture time 
uint32 xdata maxTWriteRaw;                //current datarate maximum response capture time 
uint xdata maxTDisable;                 //current datarate maximum response capture time 
uint32 xdata maxTDefaultRead;             //current datarate maximum response capture time 
uint xdata tpp_period;                  //Tpp pause in RF clocks 
uint xdata twr_period;                  //Twr write time pause in RF clocks 
 
uchar xdata last_valid;                   //last valid value for invalid sequence compression 
 
uchar xdata captured_bit_count; 	//store_bit current capture bit counter 
uchar xdata capture_cnt;        	//store_bit current capture byte index 
uchar xdata bit_pos;                      //bit position in demodulation 
uchar xdata enable_capture;             //enable capture ( 1=capture enable) 
uchar xdata last_bit;                     //for biphase and miller usag 
  
uint xdata last_capture;                //counter1 is now reset at capture start, we make a difference 
 
uchar xdata captured_byte;     		 //store_bit current capture bits 
uchar xdata captured_valid;     		//store_bit current capture valid bits 
                                     		 //between current and last value 
uchar xdata capture_time[120]; 
uchar xdata *capture_read_time_data_ptr;	 
uchar xdata capture_check; 
uchar xdata	capture_check_count; 
bit	buffer_capture_check; 
uchar xdata	compute_capture_check; 
uchar xdata debug_mode; 
 
uchar xdata fwd_bit_sz;                          //forwardlink bit counter 
 
uchar xdata *fwd_write_ptr;                     //forwardlink bit pointer 
 
uchar xdata currentMaxTimeHi;             //actual hi value of maximum capture time 
 
bit flag_wait; 
 
uchar xdata MaxCaptureHalfDateRate; 
uchar xdata MaxCaptureDateRate; 
 
uchar xdata fwd_bit_phase;              //forwardlink bit phase 
 
uchar xdata forwardLink_data[64];                //array of forwarded bits  
uchar xdata *forward_ptr;                       //ptr for forward message preparation 
 
 
//函数 
void SendResponse(unsigned char i); 
uchar Prepare_Cmd( uchar cmd );  
uchar Prepare_Addr( uchar addr ); 
void SendForward(uchar fwd_bit_count); 
void Wait(uint period); 
uchar Prepare_Data( uint data_low, uint data_hi); 
void ManchesterRead(void); 
void ManchesterWrite(void); 
uint count_module(void); 
void ReadWordToPC(void); 
void WriteWordtoCard(void); 
void ReadStatusToPC(void); 
void FieldSwitch(void); 
void SetReaderConfiguration(void); 
void GetReaderConfiguration(void); 
void Disable(void); 
void Login(void); 
void PCLinkReader(void); 
//void DefaultRead(void); 
void Readonly_autodetection(void); 
void ClearCaptureBuffers(void); 
void capture(void); 
void store_bit(bit b); 
void trace(uchar *str,uchar len); 
void myputchar(uchar c); 
void speak_on(void); 
void return_00(void); 
void FieldReset(void); 
void Read4100ID(void);