📄 sysdatatree.h
字号:
/*===========================================================================
* 2006年。三星仪表SOC芯片开发项目
*
*
* 文件名称:SysDataTree.h
* 文件标识:
* 摘 要: 数据读写操作及数据保存通过此数据树进行
*
* 当前版本:Ver 1.0
* 作 者:罗冬生
* 修改内容:
* 修改日期:
* 完成日期:
===============================================================================================*/
#ifndef _SysDataTree_h
#define _SysDataTree_h
//===============================================================================================
#include "includes.h"
//===============================================================================================
/*===============================================================================================
数据树结构说明:
1、数据结构由5个字节组成,2字节ID,2字节数据指针(用整型数据表示),1字节数据长度。
2、id用于查找数据在树结构中的序号,数据物理地址,数据长度及数据属性
3、数据树只支持一个数据层(0x0F 0x1F 0x2F)结构操作
4、e2prom的地址+0x8000,内部RAM采用原值,外部RAM采样原值+ 0x4000,程序flash中的地址+ 0x8000
5、长度字节的最高为是读写属性(bit7=0只读,bit7=1可读写)
--------------------------------------------------------------------------------
6、显示字符二个字节(汉字提示符号)
6.1 Icons1的 与平、峰、尖、总、谷共用D0~D4,D4=1时,设定第二功能(显示小数点及提示符号 )
6.2 电量小数点恒定2位,即在提示符中有电量二字即为
6.3 在提示符中有“上月”即显示序号
6.4 二字节"0xff,0xff" 为不显示
===============================================================================================*/
#define MAX_Fn 4 //最大费率数
#define UpSaveDataLen 71 //上下电保存数据长度
#define KeyMaxTime 2 //编程开关有效最长时间2分钟
#define iRAM_Adr 0x0000 //
#define xRAM_Adr 0x4000 //
#define e2RAM_Adr 0x8000 //
#define pROM_Adr 0xC000 //
#define All_RAM 0x3FFF //
#define iRAM 0
#define xRAM 1
#define e2RAM 2
#define pROM 3 //
#define Clear_VarBuf 4
#define Set_ParBuf 5
#define Set_VarParBuf 6
//union(iRAM,xRAM,e2RAM,pROM,Clear_VarBuf,Set_ParBuf,Set_VarParBuf)
//==================================================================================================
// LCD 显示模块字符定义
//==================================================================================================
#define Ping_seg 0X01 /*平 buffer[1]*/ //Icons1
#define Feng_seg 0X02 /*峰 buffer[1]*/
#define Jian_seg 0X04 /*尖 buffer[1]*/
#define Zong_seg 0X08 /*总 buffer[1]*/
#define Gu_seg 0X10 /*谷 buffer[1]*/
#define Dong_seg 0X20 /*冬 buffer[1]*/
#define DianLiang_seg 0X40 /*电量 buffer[1]*/
#define KWH_seg 0X80 /*KWH buffer[1]*/
#define Shi_Time 0X01 /*时 buffer[10]*/ //Icons2
#define Jian_Time 0X02 /*间 buffer[10]*/
#define Duan_seg 0X04 /*段 buffer[10]*/
#define BiaoHao_seg 0X08 /*表号 buffer[10]*/
#define ShangYue_seg 0X10 /*上月 buffer[10]*/
#define DangQian_seg 0X20 /*当前 buffer[10]*/
#define FanXiang_seg 0X40 /*反向 buffer[10]*/
#define RiQi_seg 0X80 /*日期 buffer[10]*/
// 与平、峰、尖、总、谷共用D0~D4,D4=1时,设定第二功能
#define Point_1 0x11 //一位小数点
#define Point_2 0x12 //二位小数点
#define Point_3 0x13 //三位小数点
#define Point_4 0x14 //四位小数点
#define TEMP_FH 0x15 //温度符号
#define U_FH 0x18 //电压符号
#define I_FH 0x19 //电流符号
//---------------------------------------------------------------------------------------------
typedef struct
{
/*1*/ unsigned int iD; //数据通信id
/*2*/ union { // 数据存放地址及存放器件和数据属性
unsigned int Adr;
struct{
/*2.1*/ unsigned int Data_Adr:10; //数据存放地址,最大为1KByte
/*2.2*/ unsigned int Data_Attr:4;
/*2.3*/ unsigned int Data_Slv:2; //数据存放器件:0-idata,1(0x4000)-xdata,2(0x8000)-e2prom
};
};
/*3*/ union{ //数据长度及数据读写属性
unsigned char Length;
struct{
/*3.1*/ unsigned char Data_Len:6;
/*3.2*/ unsigned char :1;
/*3.3*/ unsigned char DataWr_EN:1;
};
};
/*4*/ union{ //显示用
unsigned char Icons1; //显示汉字提示标识(16个通用汉字)
struct{
/*4.1*/ unsigned char Lcd_Ping:1; //*平 buffer[1]*/
/*4.2*/ unsigned char Lcd_Feng:1; //*峰 buffer[1]*/
/*4.3*/ unsigned char Lcd_Jian:1; //*尖 buffer[1]*/
/*4.4*/ unsigned char Lcd_Zong:1; //*总 buffer[1]*/
/*4.5*/ unsigned char Lcd_Gu:1; //*谷 buffer[1]*/
/*4.6*/ unsigned char Lcd_Dong:1; //*冬 buffer[1]*/
/*4.7*/ unsigned char Lcd_DianLiang:1; //*电量 buffer[1]*/
/*4.8*/ unsigned char Lcd_KWH:1; //*KWH buffer[1]*/
};
};
/*5*/ union{ //显示用
unsigned char Icons2; //显示汉字提示标识(16个通用汉字)
struct{
/*5.1*/ unsigned char Lcd_Shi:1; //*时 buffer[10]
/*5.1*/ unsigned char Lcd_Jian1:1; //*间 buffer[10]
/*5.1*/ unsigned char Lcd_Duan:1; //*段 buffer[10]
/*5.1*/ unsigned char Lcd_BiaoHao:1; //*表号 buffer[10]
/*5.1*/ unsigned char Lcd_ShangYue:1; //*上月 buffer[10]
/*5.1*/ unsigned char Lcd_DangQian:1; //*当前 buffer[10]
/*5.1*/ unsigned char Lcd_FanXiang:1; //*反向 buffer[10]
/*5.1*/ unsigned char Lcd_RiQi:1; //*日期 buffer[10]
};
};
}SysDataStruct; //系统数据结构
//------------------------------------------------------------------------------------------------
/*---------------------- 电量 41 bytes 在内部RAM中; E2prom需要保存 ----------------------------------------------------------*/
//========================================================================================================
/*************** 电量数据 ******************/
/*
extern __data volatile union{ //正向有功
unsigned char rPPwrKwh_Dtr[21];
struct
{
unsigned long rPPwrTtl_Dtr[1]; // 4byte(当前)正向有功总电能(+A) XXXXXXXX.XX kwh
unsigned long rPPwrTar1_Dtr[1]; // "" 费率1 ""
unsigned long rPPwrTar2_Dtr[1]; // "" 费率2 ""
unsigned long rPPwrTar3_Dtr[1]; // "" 费率3 ""
unsigned long rPPwrTar4_Dtr[1]; // "" 费率4 ""
unsigned char rPPwrSum_Dtr[1]; // 1byte 上述20字节之和
};
};
extern __idata volatile union{ //反向有功
unsigned char rNPwrKwh_Dtr[20];
struct
{
unsigned long rNPwrTtl_Dtr[1]; // 4byte(当前)反向有功总电能(-A) XXXXXXXX.XX kwh
unsigned long rNPwrTar1_Dtr[1]; // "" 费率1 ""
unsigned long rNPwrTar2_Dtr[1]; // "" 费率2 ""
unsigned long rNPwrTar3_Dtr[1]; // "" 费率3 ""
unsigned long rNPwrTar4_Dtr[1]; // "" 费率4 ""
};
};
extern __data volatile union{ //正向无功
unsigned char rPPwrKvar_Dtr[21];
struct
{
unsigned long rPPwrVarTtl_Dtr[1]; // 4byte(当前)正向无功总电能(+A) XXXXXXXX.XX kwh
unsigned long rPPwrVarTar1_Dtr[1]; // "" 费率1 ""
unsigned long rPPwrVarTar2_Dtr[1]; // "" 费率2 ""
unsigned long rPPwrVarTar3_Dtr[1]; // "" 费率3 ""
unsigned long rPPwrVarTar4_Dtr[1]; // "" 费率4 ""
unsigned char rPPwrVarSum_Dtr[1]; // 1byte 上述20字节之和
};
};
*/
/*--------------------------------------------------------------------------------------------------------------*/
/************ 系统时间 ****************/
/*
extern __data union{
unsigned char rSysTmDt_Dtr[7]; //系统时间日期(ss.mm.hh ww DD-MM-YY)
struct
{
unsigned char rTime_Dtr[3]; //系统时间 C010
unsigned char rDateWk_Dtr[4]; //系统日期 C011
};
unsigned char TimeBuffer[7];
struct
{
unsigned char Second; //秒
unsigned char Minute; //分
unsigned char Hour; //时
unsigned char Week; //周
unsigned char Date; //日
unsigned char Month; //月
unsigned char Year; //年
};
};
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -