⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysdatatree.h

📁 一个电表的程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*===========================================================================
* 			 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 + -