📄 sysdatatree(eric).c.bak
字号:
/*===========================================================================
* 2006年。三星仪表SOC芯片开发项目
*
*
* 文件名称:SysDataTree.c
* 文件标识:
* 摘 要: 数据读写操作及数据保存通过此数据树进行
*
* 当前版本:Ver 1.0
* 作 者:罗冬生
* 修改内容:
* 修改日期:
* 完成日期:
===============================================================================================*/
#ifndef _SysDataTree_c
#define _SysDataTree_c
//===============================================================================================
#include "includes.h"
/*===============================================================================================
** Abstract:需求数据,掉电不清零,上电校验、复位从EEPROM读取
** Date: 06-02-21 [yy.mm.dd]
**---------------------------------------------------------------------------------------------*/
//RAM变量定义区
//电量 41 bytes
/*-------------------------------------------------------------------------------------------------------*/
// 上电下电需要保存和传输的数据
/*************** 一、 电量数据 ******************/
__data union
{
signed char rUpDownPowerDataBuf[UpSaveDataLen]; // 21+21+21+7=70
struct
{
union //正向有功
{
unsigned char rPPwrKwh_Dtr[(MAX_Fn+1)*4+1];
struct
{
unsigned long rPKwhPwr_Dtr[MAX_Fn+1]; // 4byte(当前)正向有功总、费率电能(+A) XXXXXXXX.XX kwh
unsigned char rPKwhPwrSum_Dtr[1]; // 1byte 上述总、费率电能(20)字节之和
};
};
union //反向有功
{
unsigned char rNPwrKwh_Dtr[(MAX_Fn+1)*4+1];
struct
{
unsigned long rNKwhPwr_Dtr[MAX_Fn+1]; // 4byte(当前)反向有功总、费率电能(-A) XXXXXXXX.XX kwh
unsigned char rNKwhPwrSum_Dtr[1]; // 1byte 上述总、费率电能(20)字节之和
};
};
union //正向无功
{
unsigned char rPPwrKvarh_Dtr[(MAX_Fn+1)*4+1];
struct
{
unsigned long rPKvarhPwr_Dtr[MAX_Fn+1]; // 4byte(当前)正向无功总、费率电能(+A) XXXXXXXX.XX kwh
unsigned char rPKvarhPwrSum_Dtr[1]; // 1byte 上述总、费率电能(20)字节之和
};
};
// ***************** 二、 系统时间数据 *********************
union
{
unsigned char rSysTmDt_Dtr[8]; //系统时间日期(ss.mm.hh ww DD-MM-YY)
struct
{
unsigned char rTime_Dtr[3]; //系统时间 C010
unsigned char rDateWk_Dtr[4]; //系统日期 C011
};
unsigned char TimeBuffer[8];
struct
{
unsigned char Second; //秒
unsigned char Minute; //分
unsigned char Hour; //时
unsigned char Date; //日
unsigned char Month; //月
unsigned char Year; //年
unsigned char Week; //周
unsigned char TimeSum; //上述7个字节校验和
};
};
//--------------------------------------------------------------------------------------------------------------
};
};
//------------------------------------------------------------------------------------------------------------------------
/**************** 电网参数 **********************/
__idata volatile union{
unsigned char rEletricityNet_Dtr[7];
struct{
unsigned int rVoltage_Dtr[1]; //当前电压有效值
unsigned int rCurrent_Dtr[1]; //当前电流有效值
unsigned char rPower_Dtr[3]; //当前功率
};
};
//-------------------------------------------------------------------------------------------------------------------
/****************** 系统参数 ******************/
__data unsigned char rVBAT_Dtr[2]; // 2byte 当前电池电压 nnnn
__data unsigned char rTemperature_Dtr[1]; // 1byte 当前温度 NN
__data unsigned char rMtWd_Dtr[1]; // 1byte 电表运行状态字(见附录B1)XX
__data unsigned char rPwrNtWd_Dtr[1]; // 1byte 电网状态字(见附录B2) XX
__idata union{
unsigned char rCommParamter[41];
struct // 每次通信需要刷新的数据
{
unsigned char rMtCt_Dtr[3]; // 3byte 电表常数(只读) NNNNNN
unsigned char rShftDspTm_Dtr[1]; // 1byte 循显时间 XX s
unsigned char rStpDspTm_Dtr[1]; // 1byte 循显间隔时间 NN s
unsigned char rOpnClsLcd_Dtr[4]; // 4byte 开显示/关显示时间 hhmm-hhmm 时分-时分
unsigned int rRttDspNo_Dtr[16]; // 32byte 16项个正常显示序号存放区序号
};
};
//----------------------------------------------------------------------------------------------------------------
/************** 计时器-缓冲区 ****************/
__data union
{
unsigned char Timers[7];
struct
{
unsigned char SecCount; // 秒计数
unsigned char CommByte_Time; // 通信字节之间延时(ms)
unsigned char CommHWDelyTime; // 红外通信时间(ms)
unsigned char Disp_Time; // LCD显示计时(s)
unsigned char Key_Time; // 编程按键有效时间(min)
unsigned char MinCount; // 分计时(s)
unsigned char DQ_Fl; // 当前费率
unsigned char CF_const; // 脉冲常数
unsigned char CF1Count; //CF1(有功)脉冲计数
unsigned char CF2Count; //CF2(无功)脉冲计数
};
};
//----------------------------------------------------------------------------------------------------------------
/************** 系统标志-缓冲区 ****************/
__bdata __no_init volatile union
{
unsigned char TaskFlg; // 任务标志
struct
{
unsigned char Disp_Flg : 1; //停显标志
unsigned char RTC_Min_Flg: 1; //RTC分钟标志
unsigned char WatchDog_Flg: 1; //喂狗标志
unsigned char RTC_Date_Flg: 1; //RTC日标志,即一天过00:00:00标志
unsigned char RTC_Sec_Flg: 1; //RTC秒标志
unsigned char SaveData_Flg: 1; //Vin电源掉电标志。(ct供电时有可能在此状态工作)
unsigned char Run_Mode: 1; //工作模式
unsigned char E2_Op_Flg: 1; //E2PROM正在操作标志
} ;
}; // @ 0x28;
__bdata __no_init volatile union
{
unsigned char StatFlg; //状态标志
struct
{
unsigned char FX_Flg : 1; //电流反向用电标志 S1
unsigned char Key : 1; //按键操作 S3
unsigned char Comm_Flg : 1; //通信标志 S4
unsigned char DiQi_Flg : 1; //电池欠压标志 S5
unsigned char DongTine_Flg : 1; //冬天用电标志 S6
unsigned char Key_Flg : 1; //开锁-编程允许标志 S2
unsigned char TEMP_Flg: 1; //温度变化标志,需要进行一些温度补偿
unsigned char PowerMeasure: 1; //功率测量标志
};
}; // @ 0x29;
//-------------------------------------------------------------------------------------------------------------------------------------
__bdata __no_init volatile union
{
unsigned char sysErrFlg; //系统错误标志
struct
{
unsigned char E2PROM_ERR : 1; //E2PROM出错标志
unsigned char Energy_ERR : 1; //能量模块出错标志
unsigned char : 1; //
unsigned char : 1; //
unsigned char : 1; //
unsigned char : 1; //
unsigned char : 1;
unsigned char : 1;
};
}; // @ 0x2A;
__data unsigned char SysErrNumb; //系统错误标号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -