📄 struct.h
字号:
#ifndef __STRUCT_H__
#define __STRUCT_H__
typedef unsigned char UCHAR;
typedef unsigned int UINT;
typedef unsigned long ULONG;
typedef unsigned long LONG;
#define uchar unsigned char
#define uint unsigned int
#define FLG_NEW 0x0001 //reader 收到未登记的新tag
#define FLG_OLD 0x0002 //readerr 再次收到前面登记过
//#define INACTIVITY_TIME 1 //标签离开时间S
#define CHANL_DIN 1 //韦根进门
#define CHANL_DOUT 2 //韦根出门
#define FRAME_LEN 19 //一帧空间数据包的长度
#define WCMD_NOR 0x01 //普通询卡
#define WCMD_RLY 0x11 //卡回复ID
#define WCMD_SLP 0x02 //已经收到卡,命令休眠1s
#define WCMD_NONE 0x12 //未定义
#define WCMD_SET_CC 0x03 //PC要求基站配置点卡,连卡变化
#define WCMD_SET_NC 0x04 //PC要求基站配置点卡,但卡不变
#define WCMD_OK 0x13 //点卡回复基站中转PC正确
#define WCMD_ERR 0x14 //点卡回复基站中转PC错误
#define PCS_read_READER 0x41 //PC命令读取基站信息
#define PCS_read_TAG 0x42 //PC命令读取卡信息
#define PCS_write_READER 0x31 //PC命令写基站参数
#define PCS_write_TAG 0x32 //PC命令卡参数
#define PCS_wr_OK 0x21 //PC命令写基站参数 成功回复PC
#define PCS_wt_OK 0x22 //PC命令卡参数 成功回复PC
#define MAX_SYSTIMER_COUNT 6 //最多定时器倒计个数
#define IS_READER 0x01
#define IS_TAG 0x02
#define event_time_50ms 0x0001
#define event_time_100ms 0x0002
#define event_time_1000ms 0x0004
#define event_uart_arrived 0x0008
#define event_wie_arrived 0x0010
#define event_xxx_2 0x0020
#define event_xxx_3 0x0040
#define event_xxx_4 0x0080
/******************************************************************************
** 管脚定义
******************************************************************************/
//X25128
sbit X_CS =P1^1; //EEPROM选中
sbit X_SO =P0^1; //EEPROM SPI 发送 和si4421 spi 共用
sbit X_SI =P0^6; //EEPROM SPI 接收 和si4421 spi 共用
sbit X_SCK =P0^0; //EEPROM SPI 时钟 和si4421 spi 共用
sbit TX =P0^4; //串口发送
sbit RX =P0^5; //串口接收
sbit INT0 =P0^7; //保留
sbit D0W =P1^2; //pca 韦根信号d0
sbit D1W =P1^3; //pca 韦根信号d1
sbit D0IN =P1^4; //进门韦根输出0
sbit D1IN =P1^5; //进门韦根输出1
sbit D0OUT =P1^6; //出门韦根输出0
sbit D1OUT =P1^7; //出门韦根输出1
//si4421
sbit sck =P0^0; //si4421 spi时钟
sbit sdo =P0^1; //si4421 spi发送
sbit sdi =P0^6; //si4421 spi接收
sbit nsel =P1^0; //si4421选中
sbit nres =P0^7; //si4421复位
//指示输出
sbit WIE_CK =P2^0; //韦根选择 低有效
sbit TRIG =P2^1; //触发选择
sbit IN_OUT =P2^2; //进出标记
sbit W_FLG =P2^3; //写标记
sbit DI =P2^4; //发送控制
sbit RE =P2^5; //接收控制
sbit W_RST =P2^6; //芯片初始化
sbit BELL =P2^7; //指示灯 高有效
sbit LEDR =P0^3; //指示灯 低有效
sbit LEDG =P0^2; //指示灯 低有效
sbit RELAY_IN =P3^1; //进门继电器 //0有效断开动作 上电常态吸合
sbit RELAY_OUT =P3^2; //出门继电器
sbit TRIG_IN =P3^3; //进门短路信号触发
sbit TRIG_OUT =P3^4; //出门短路信号触发
/******************************************************************************
** 16-bit SFR Definitions for 'F31x
******************************************************************************/
sfr16 DP = 0x82; // data pointer
sfr16 TMR2RL = 0xca; // Timer2 reload value
sfr16 TMR2 = 0xcc; // Timer2 counter
sfr16 TMR3 = 0x94; // Timer3 counter
sfr16 TMR3RL = 0x92; // Timer3 reload value
sfr16 PCA0CP0 = 0xfb; // PCA0 Module 0 Capture/Compare
sfr16 PCA0CP1 = 0xe9; // PCA0 Module 1 Capture/Compare
sfr16 PCA0CP2 = 0xeb; // PCA0 Module 2 Capture/Compare
sfr16 PCA0CP3 = 0xed; // PCA0 Module 3 Capture/Compare
sfr16 PCA0CP4 = 0xfd; // PCA0 Module 4 Capture/Compare
sfr16 PCA0 = 0xf9; // PCA0 counter
sfr16 ADC0 = 0xbd; // ADC Data Word Register
sfr16 ADC0GT = 0xc3; // ADC0 Greater-Than
sfr16 ADC0LT = 0xc5; // ADC0 Less-Than
typedef struct
{
UCHAR data_len; //数据总长度
UCHAR cmd; //发送命令
UCHAR reader_id[4]; //基站系统号4字节
UCHAR tag_id[6]; //标签卡号
UCHAR tag_cenfre; //中心频率
UCHAR tag_power; //收发功率
UCHAR tag_bud; //通信频率
UCHAR tag_flaginout; //进出门标记
UCHAR tag_tagantitime; //卡防冲撞休眠时间
UCHAR tag_tagchgflagtine; //卡改自身标记时间
UCHAR tag_buf[4]; //预留8字节
UCHAR skey[4]; //4字节密钥
UINT crc; //2字节crc校验
} CMD_TAG; //配置及读卡标签参数28+4字节
typedef struct
{
UCHAR data_len; //数据总长度
UCHAR cmd; //发送命令
UCHAR reader_id[4]; //基站系统号4字节
UCHAR tag_id[6]; //标签卡号
UCHAR tag_flag; //标签进出1=进 0=出
UCHAR skey[4]; //4字节密钥
UINT crc; //2字节crc校验
} FIND_TAG; //主动查找标签数据帧
typedef struct
{
UCHAR data_len; //数据总长度
UCHAR cmd; //命令
UCHAR reader_id[4]; //基站系统号4字节
UCHAR tag_id[6]; //标签卡号6字节
UCHAR tag_flag; //标签进出1=进 0=出
UCHAR skey[4]; //4字节密钥
UINT crc; //2字节crc校验
UCHAR state; //状态
UCHAR inactivity; //递减溢出
} REPLY_FRAME; //回复标签数据帧
typedef struct
{
UCHAR pcs_headh; //起始头高字节
UCHAR pcs_headl; //起始头低字节
UCHAR pcs_len; //数据长度 固定32字节
UCHAR pcs_cmd; //选择基站还是标签的配置 选择方式及命令方式半字节
UCHAR pcs_readerid[4]; //基站系统号
UCHAR pcs_tagid[6]; //标签卡号
UCHAR pcs_cenfre; //中心频率
UCHAR pcs_power; //收发功率
UCHAR pcs_bud; //通信频率
UCHAR pcs_samecardtime; //相同卡号输出间隔时间
UCHAR pcs_relaytime; //继电器输出间隔时间
UCHAR pcs_flaginout; //进出门标记
UCHAR pcs_wieformat; //wiegand输出格式
UCHAR pcs_trig; //触发方式
UCHAR pcs_ledshow; //读卡机功能选择
UCHAR pcs_tagantitime; //卡防冲撞休眠时间
UCHAR pcs_tagchgflagtine; //卡改自身标记时间
UCHAR pcs_buf[5]; //预留5字节
UINT pcs_crc16; //最后2字节校验
}READER_PCS; //读卡器需要配置的上位机参数32字节
typedef struct
{
UCHAR save_id[6]; //标签卡号
UCHAR save_io; //进出状态
UCHAR save_state; //状态
UCHAR save_inactivity; //递减溢出
} SAVE_ID; //多标签数组
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -