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

📄 sysdatatree(eric).h.bak

📁 一个电表的程序
💻 BAK
📖 第 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  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 + -