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

📄 sysdatatree(eric).c.bak

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