📄 eeprom.h
字号:
//EEPROM_ADD
#ifndef EEPROM_H
#define EEPROM_H
//位变量记录方式
#define YES 0x55 ///有啥意思
#define NO 0xAA ///这样搞干啥
#define EEPROM_ADD_0xA6 0x01 //初始化过存储器标记0x54的位置
#define EEPROM_ADD_0x1B 0x02
#define EEPROM_ADD_LCKG_PWD 0x03 //是否正在锁定需密码的操作
//记录锁定结束时间的位置在: EEPROM_ADD_LCKPWD_MIN
#define EEPROM_ADD_FLAG41_SEL 0x04 //是否使用 4+1,不使用 4+1 就用 ContactID 协议,默认ContactID
#define EEPROM_ADD_RELAY_OUT (EEPROM_ADD_FLAG41_SEL + 1)//0x05 //记录继电器输出类型,默认为2. 1为报警输出,2火警输出,3布防输出
///继电器输出类型
//需要传送到键盘的放在一起
#define EEPROM_ADD_ARM_STATU (EEPROM_ADD_RELAY_OUT + 1)//0x06 //布防状态,密码,延时时间
///布防状态
#define BYTE_PER_PWD 2 //每个密码占用字节数
//用户密码,高位在低地址,即先读高位(1234的12在低地址)
#define EEPROM_ADD_USER_PWD (EEPROM_ADD_ARM_STATU + 1)//0x07
//客人密码/操作密码,密码被清除时保存为0xFF
#define EEPROM_ADD_GUEST_PWD (EEPROM_ADD_USER_PWD + BYTE_PER_PWD)//0x09
//操作密码个数
#define NUM_GUEST_PWD 5
///客人密码空间末尾地址
#define EEPROM_ADD_GUEST_PWD_END (EEPROM_ADD_GUEST_PWD + NUM_GUEST_PWD * BYTE_PER_PWD - 1)//0x12
//外出延时时间
#define EEPROM_ADD_OUT_DELAY (EEPROM_ADD_GUEST_PWD_END + 1)//0x13
//进入延时时间
#define EEPROM_ADD_COMIN_DELAY (EEPROM_ADD_OUT_DELAY + 1)//0x14
//振铃次数,99 表示不接受电话控制
#define EEPROM_ADD_RING (EEPROM_ADD_COMIN_DELAY + 1)//0x15
//用户ID//两字节
#define EEPROM_ADD_USER_ID (EEPROM_ADD_RING + 1)//0x16
//每个ID的字节数
#define BYTES_PER_ID 2
//记录电话号码 1~6是否被使用,使用bit0~5记录,0表示号码被清除
#define EEPROM_ADD_TEL_EXIST (EEPROM_ADD_USER_ID + BYTES_PER_ID)//0x18
//每组电话号码占的最大字节数
#define BYTES_PER_TEL 0x09 ///最多18位数字
//电话号码:6组电话,每组9个字节,占用空间0x1A~0x4E
//第一个字节是号码位数,后8个半字节是16个号码
//如果修改为大于256的数值,将键盘处理程序的变量ucAddTel类型改为整形
#define EEPROM_ADD_TEL (EEPROM_ADD_TEL_EXIST + 1) //0x19
//电话号码个数
#define TEL_NUMS_RECORD 0x06
//电话号码结束地址
#define EEPROM_ADD_TEL_END (EEPROM_ADD_TEL + BYTES_PER_TEL * TEL_NUMS_RECORD - 1)//0x4E
//紧跟电话号码后面//0x46
//记录可以再次进行需使用密码的操作的时间点
#define EEPROM_ADD_LCKPWD_MIN (EEPROM_ADD_TEL_END + 1)//0x4F
#define EEPROM_ADD_LCKPWD_HOUR (EEPROM_ADD_LCKPWD_MIN + 1)//0x50
#define EEPROM_ADD_LCKPWD_DATE (EEPROM_ADD_LCKPWD_HOUR + 1)//0x51
#define EEPROM_ADD_LCKPWD_MON (EEPROM_ADD_LCKPWD_DATE + 1)//0x52
#define EEPROM_ADD_LCKPWD_YR (EEPROM_ADD_LCKPWD_MON + 1)//0x53
//是否检测电话掉线.
#define EEPROM_ADD_CHK_PHN_LN (EEPROM_ADD_LCKPWD_YR + 1) //0x54
///干啥用的呢
#define EEPROM_ADD_0xAC (EEPROM_ADD_CHK_PHN_LN + 1)
//临时记录ContactID事件的起始地址
#define EEPROM_ADD_CNTCT_EVT_START (EEPROM_ADD_0xAC + 1)//0x56//(EEPROM_ADD_CNTCT_EVTS_NUM + 1)
//每个事件两字节,第一字节B7B6位存是新事件/撤防(01B表示,ContactID标志发1),
//还是新的恢复事件或布防(10B表示,ContactID标志发3),
//第一字节B0~B5位存事件索引号,第二字节存防区/操作者
#define BYTES_PER_CNTCT_EVTS 2 ///每个CONTACT ID事件暂用两个字节
#define EEPROM_ADD_CNTCT_EVT_END 0x76 ///不太明白
#define MAX_CNTCT_EVT_NUM ((EEPROM_ADD_CNTCT_EVT_END - EEPROM_ADD_CNTCT_EVT_START + 1)/BYTES_PER_CNTCT_EVTS)
///为什么这样搞
#define MAX_41EVT_NUM (EEPROM_ADD_CNTCT_EVT_END - EEPROM_ADD_CNTCT_EVT_START + 1)
///可能4+1事件每个占一个字节
//辅助CPU版本号,即使辅助CPU没有复位,也读出正确的版本号
#define EEPROM_ADD_AUX_VER 0x90
//是否使用自动布、撤防功能:0x55表示使用,0xAA表示不使用
#define EEPROM_ADD_FLAG_TIMER_ARM 0x91 //(EEPROM_ADD_CNTCT_EVT_END + 1)//0x75
//自动布、撤防时间设置:各三组,每组使用2字节,时分各一个字节(0x71~0x7C)
#define GROUPS_TIME_ARM 0x03 ///三组自动布/撤防
#define BYTES_PER_TIMER 0x02 ///每个时间占两个字节
#define EEPROM_ADD_TIME_ARM (EEPROM_ADD_FLAG_TIMER_ARM + 1)//0x92
#define EEPROM_ADD_TIME_DISARM (EEPROM_ADD_TIME_ARM + BYTES_PER_TIMER * GROUPS_TIME_ARM)//0x98
//是否使用警笛的定义
#define EEPROM_ADD_FLAG_TRUMP_SEL (EEPROM_ADD_TIME_DISARM + BYTES_PER_TIMER * GROUPS_TIME_ARM)//0x9E
//警号鸣叫时间,默认10分钟,范围 0~30 分钟
#define EEPROM_ADD_TRUMP_TIME (EEPROM_ADD_FLAG_TRUMP_SEL + 1)//0x9F
#define NUM_WR_ZN 4 ///有线防区4个
#define NUM_WRLS_ZN 16 ///无线防区16个
//防区类型设置:每个防区一个字节,16个无线(0x80~0x8F),4个有线(0x90~0x97)
#define EEPROM_ADD_ZONE_TYPE (EEPROM_ADD_TRUMP_TIME + 1)//0xA0
#define EEPROM_ADD_ZNTYP_WRLS (EEPROM_ADD_ZONE_TYPE)//(EEPROM_ADD_ZNTYP_WR + NUM_WR_ZN - 1)//0xA0
#define EEPROM_ADD_ZNTYP_WR (EEPROM_ADD_ZNTYP_WRLS + NUM_WRLS_ZN)//0xB0
#define EEPROM_ADD_ZONE_TYPE_END (EEPROM_ADD_ZNTYP_WR + NUM_WR_ZN -1)//0xB3
//防区是否旁路8个防区一个字节,1表示被旁路
//顺序1~8,9~16无线防区,21~24有线防区,41~48键盘有线防区,然后是键盘防拆和意外掉线
//最后一位的位D5是主机防拆,D6是遥控和键盘紧急按钮,D7是胁持密码报警
//0xA0~0xA5共6个字节(5个字节三个位)
#define EEPROM_ADD_BYPASS_INF (EEPROM_ADD_ZONE_TYPE_END + 1) //0xB4
///地址的开头
#define EEPROM_ADD_BYPASS_WRLSZN (EEPROM_ADD_BYPASS_INF) //0xB4
///无线防区顺序1~8
#define EEPROM_ADD_BYPASS_WRLSZN_H (EEPROM_ADD_BYPASS_WRLSZN + 1) //0xB5
///无线防区顺序9~16
#define EEPROM_ADD_BYPASS_WRZN (EEPROM_ADD_BYPASS_WRLSZN_H + 1) //0xB6
///有线防区
#define EEPROM_ADD_BYPASS_OTH (EEPROM_ADD_BYPASS_WRZN + 1) //0xB7
//用户密码2~5
//#define EEPROM_ADD
#define BYTES_PER_HISTORY 0x08 ///每个历史记录占8个字节
#define MAX_HISTORY_RECS 40 ///最大事件个数
//历史报警记录:每个记录8字节;0xC0 ~ 0x1FF(192 ~ 511);
//防区类型,防区号,年,月,日,时,分
#define EEPROM_ADD_HISTORY (EEPROM_ADD_BYPASS_OTH + 1) //(EEPROM_ADD_HSTR_PNT + 1) //=0x0B8
///历史记录起始地址
#define EEPROM_ADD_HISTORY_END (EEPROM_ADD_HISTORY + BYTES_PER_HISTORY*MAX_HISTORY_RECS - 1)
///历史记录结束地址
//历史记录指针地址
#define EEPROM_ADD_HSTR_PNT (EEPROM_ADD_HISTORY_END + 1) //(EEPROM_ADD_BYPASS_OTH + 1)
///历史记录指针干啥用的
#define EEPROM_ADD_0xD8 0x1FE
#define EEPROM_ADD_0xC0 0x1FF
#if (EEPROM_ADD_HISTORY_END > 511)
MAX_HISTORY_RECS = 0;
#endif
#if (EEPROM_ADD_BYPASS_OTH >= EEPROM_ADD_HSTR_PNT) ///应该不会大于它
///应该不会大于历史指针地址
MAX_HISTORY_RECS = 0;
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -