📄 sysdatatree(eric).h.bak
字号:
/*===========================================================================
* 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 K_seg 0x01 /* K buffer[10] */
#define V_seg 0x02 /* V buffer[10] */
#define A_seg 0x04 /* A buffer[10] */
#define R_seg 0x08 /* R buffer[10] */
#define H_seg 0x10 /* H buffer[10] */
#define kW_seg 0x20 /* kW buffer[10] */
#define h_seg 0x40 /* h buffer[10] */
#define PF_seg 0x80 /* PF buffer[10] */
#define S1_seg 0x11 //
#define S2_seg 0x12 //
#define S3_seg 0x13 //
#define S4_seg 0x14 // need modify
#define S13_seg 0x //
//---------------------------------------------------------------------------------------------
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; //显示英文提示标识(8个英文字母)
struct{
/*4.1*/ unsigned char Lcd_K_seg:1; //*K buffer[10]*/
/*4.2*/ unsigned char Lcd_V_seg:1; //*V buffer[10]*/
/*4.3*/ unsigned char Lcd_A_seg:1; //*A buffer[10]*/
/*4.4*/ unsigned char Lcd_R_seg:1; //*R buffer[10]*/
/*4.5*/ unsigned char Lcd_H_seg:1; //*H buffer[10]*/
/*4.6*/ unsigned char Lcd_kW_seg:1; //*kW buffer[10]*/
/*4.7*/ unsigned char Lcd_h_seg:1; //*h buffer[10]*/
/*4.8*/ unsigned char Lcd_PF_seg:1; //*PF 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; //年
};
};
*/
/*-------------------------------------------------------------------------------------------------------*/
// 上电下电需要保存和传输的数据
/*************** 一、 电量数据 ******************/
extern __data union
{
signed char rUpDownPowerDataBuf[UpSaveDataLen]; // 21+21+21+7=70
struct
{
union //正向有功
{
unsigned char rPPwrKwh_Dtr[(MAX_Fn+1)*4+1];
struct
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -