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

📄 sysdatatree(eric).c

📁 一个电表的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/*150*/     {0xe37f,    (unsigned int )eSY7_PPwrTtl_Dtr     + e2RAM_Adr, 20,         0xFF,   0xFF   },   //(7月)正向有功电能数据块			

/*151*/     {0xe380,    (unsigned int )eSY8_PPwrTtl_Dtr     + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(8月)正向有功总电能(+A)   XXXXXX.XX   kWh			
/*152*/     {0xe381,    (unsigned int )eSY8_PPwrTar1_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(8月)费率1正向有功电能    XXXXXX.XX   kWh			
/*153*/     {0xe382,    (unsigned int )eSY8_PPwrTar2_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上8月)费率2正向有功电能    XXXXXX.XX   kWh			
/*154*/     {0xe383,    (unsigned int )eSY8_PPwrTar3_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上8月)费率3正向有功电能    XXXXXX.XX   kWh			
/*155*/     {0xe384,    (unsigned int )eSY8_PPwrTar4_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上8月)费率4正向有功电能    XXXXXX.XX   kWh			
/*156*/     {0xe38f,    (unsigned int )eSY8_PPwrTtl_Dtr     + e2RAM_Adr, 20,      0xFF,      0xFF   },   //(上8月)正向有功电能数据块			

/*157*/     {0xe390,    (unsigned int )eSY9_PPwrTtl_Dtr     + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上9月)正向有功总电能(+A)   XXXXXX.XX   kWh			
/*158*/     {0xe391,    (unsigned int )eSY9_PPwrTar1_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上9月)费率1正向有功电能    XXXXXX.XX   kWh			
/*159*/     {0xe392,    (unsigned int )eSY9_PPwrTar2_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上9月)费率2正向有功电能    XXXXXX.XX   kWh			
/*160*/     {0xe393,    (unsigned int )eSY9_PPwrTar3_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上9月)费率3正向有功电能    XXXXXX.XX   kWh			
/*161*/     {0xe394,    (unsigned int )eSY9_PPwrTar4_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上9月)费率4正向有功电能    XXXXXX.XX   kWh			
/*162*/     {0xe39f,    (unsigned int )eSY9_PPwrTtl_Dtr     + e2RAM_Adr, 20,    0xFF,    0xFF       },   //(上9月)正向有功电能数据块			

/*163*/     {0xe3a0,    (unsigned int )eSY10_PPwrTtl_Dtr     + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上10月)正向有功总电能(+A)   XXXXXX.XX   kWh			
/*164*/     {0xe3a1,    (unsigned int )eSY10_PPwrTar1_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上10月)费率1正向有功电能    XXXXXX.XX   kWh			
/*165*/     {0xe3a2,    (unsigned int )eSY10_PPwrTar2_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上10月)费率2正向有功电能    XXXXXX.XX   kWh			
/*166*/     {0xe3a3,    (unsigned int )eSY10_PPwrTar3_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上10月)费率3正向有功电能    XXXXXX.XX   kWh			
/*167*/     {0xe3a4,    (unsigned int )eSY10_PPwrTar4_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上10月)费率4正向有功电能    XXXXXX.XX   kWh			
/*168*/     {0xe3af,    (unsigned int )eSY10_PPwrTtl_Dtr     + e2RAM_Adr, 20,        0xFF,  0xFF     },   //(上10月)正向有功电能数据块			

/*157*/     {0xe3b0,    (unsigned int )eSY11_PPwrTtl_Dtr     + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上11月)正向有功总电能(+A)   XXXXXX.XX   kWh			
/*158*/     {0xe3b1,    (unsigned int )eSY11_PPwrTar1_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上11月)费率1正向有功电能    XXXXXX.XX   kWh			
/*159*/     {0xe3b2,    (unsigned int )eSY11_PPwrTar2_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上11月)费率2正向有功电能    XXXXXX.XX   kWh			
/*160*/     {0xe3b3,    (unsigned int )eSY11_PPwrTar3_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上11月)费率3正向有功电能    XXXXXX.XX   kWh			
/*161*/     {0xe3b4,    (unsigned int )eSY11_PPwrTar4_Dtr    + e2RAM_Adr, 4,  ( kW_seg +h_seg), T_seg},   //(上11月)费率4正向有功电能    XXXXXX.XX   kWh			
/*162*/     {0xe3bf,    (unsigned int )eSY11_PPwrTtl_Dtr     + e2RAM_Adr, 20,     0xFF,   0xFF      },   //(上11月)正向有功电能数据块			

/*163*/     {0xe3c0,    (unsigned int )eSY12_PPwrTtl_Dtr     + e2RAM_Adr,  4,  ( kW_seg +h_seg), T_seg},  //(上12月)正向有功总电能(+A)   XXXXXX.XX   kWh			
/*164*/     {0xe3c1,    (unsigned int )eSY12_PPwrTar1_Dtr    + e2RAM_Adr,  4,  ( kW_seg +h_seg), T_seg},   //(上12月)费率1正向有功电能    XXXXXX.XX   kWh			
/*165*/     {0xe3c2,    (unsigned int )eSY12_PPwrTar2_Dtr    + e2RAM_Adr,  4,  ( kW_seg +h_seg), T_seg},   //(上12月)费率2正向有功电能    XXXXXX.XX   kWh			
/*166*/     {0xe3c3,    (unsigned int )eSY12_PPwrTar3_Dtr    + e2RAM_Adr,  4,  ( kW_seg +h_seg), T_seg},   //(上12月)费率3正向有功电能    XXXXXX.XX   kWh			
/*167*/     {0xe3c4,    (unsigned int )eSY12_PPwrTar4_Dtr    + e2RAM_Adr,  4,  ( kW_seg +h_seg), T_seg},   //(上12月)费率4正向有功电能    XXXXXX.XX   kWh			
/*168*/     {0xe3cf,    (unsigned int )eSY12_PPwrTtl_Dtr     + e2RAM_Adr, 20,          0xFF,    0xFF  },   //(上12月)正向有功电能数据块			

/*169*/     {0xffff,    0,  0, 0xff,0xff}
};
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//          系统初始参数表(151字节)

 __code const struct
 {
/*04*/   unsigned char pMtCt_Dtr[3];                // 3byte 电表常数(只读):3200  NNNNNN      				
/*08*/   unsigned char pShftDspTm_Dtr[1];           // 1byte 循显时间:6s            XX   s          				
/*09*/   unsigned char pStpDspTm_Dtr[1];            // 1byte 循显间隔时间:1s         NN   s       				
/*18*/   unsigned char pOpnClsLcd_Dtr[4];           // 4byte 开显示/关显示时间08:00~23:00  hhmm-hhmm	时分-时分			
         unsigned int  pRttDspNo_Dtr[16];           // 32byte 16项个正常显示序号存放区序号				


/*01*/   unsigned char pParamtA_Dtr[2];             // 2byte 参量A([1]电池电压、[0]脉冲数				
/*02*/   unsigned char pParamtB_Dtr[2];             // 2byte 参量B(电量显示位数可设置,)				


/*03*/   unsigned char pParamtC_Dtr[2];             // 2byte 参量C				
/*05*/   unsigned char pMtNo_Dtr[6];                // 6byte 表号为:123456              NNNNNNNNNNNN				
/*06*/   unsigned char pUsrNo_Dtr[6];               // 6byte 用户号:1          NNNNNNNNNNNN				
/*07*/   unsigned char pDvcNo_Dtr[6];               // 6byte 设备号:2          NNNNNNNNNNNN				

/*10*/   unsigned char pAUtRdTm_Dtr[2];             // 2byte 自动抄表日期:每月28日23时    DDhh  日.时         				
/*11*/   unsigned char pInitEngy_Dtr[4];            // 4byte 电量底数:0	

/*12*/                                              // 30byte 10个时段(日时段表集合)
     unsigned char pTmSctCnt_Dtr[1];                // 1byte 日时段数	
     unsigned char pFvCnt_Dtr[1];                   // 1byte 日费率数
     unsigned char pTbl1_Dtr[3];                    // 3byte  第一时段8点钟开始,费率为3(平)            				
     unsigned char pTbl2_Dtr[3];                    // 3byte  第二时段14点钟开始,费率为3(峰)            				
     unsigned char pTbl3_Dtr[3];                    // 3byte  第三时段20点钟开始,费率为3(谷)
     unsigned char pTbl4_Dtr[3];                    // 3byte  第四时段为"空"
     unsigned char pTbl5_Dtr[3];                    // 3byte  第五时段为"空"
     unsigned char pTbl6_Dtr[3];                    // 3byte  第六时段为"空"
     unsigned char pTbl7_Dtr[3];                    // 3byte  第七时段为"空"
     unsigned char pTbl8_Dtr[3];                    // 3byte  第八时段为"空"
     unsigned char pTbl9_Dtr[3];                    // 3byte  第九时段为"空"
     unsigned char pTbl10_Dtr[3];                   // 3byte  第十时段为"空"


         unsigned int  pKeyDspNo_Dtr[16];            // 32byte 16项按键显示序号存放区序号       				


/*15*/   unsigned char pDate_SttWntr[3];             // 3byte 冬季开始日期      (NN为00)11.01.00				
/*16*/   unsigned char pDate_EndWntr[3];             // 3byte 冬季结束日期      (NN为00)04.01.00				
/*17*/   unsigned char pPassWd00_Dtr[4];             // 4byte 密码权限及密码:11111100    NNNNNNNN 				
/*19*/   unsigned char pComposerPassword_Dtr[4];     // 4byte 密码(设计者专用):19621008    NNNNNNNN 				

         unsigned char  pCF1DEN[2];                  // 2Byte CF1高频脉冲常数(有功)                 28H
         unsigned char  pCF2DEN[2];                  // 2Byte CF2高频脉冲常数(无功)                2AH


}PromParamtTree=
{

  //          系统初始参数表(151字节)
/*04*/  /* unsigned char pMtCt_Dtr[3]=*/     {0x00,0x32,0x00},           // 3byte 电表常数(只读):3200  NNNNNN      				
/*08*/  /* unsigned char pShftDspTm_Dtr[1]=*/   {6},                     // 1byte 循显时间:6s            XX   s          				
/*09*/  /* unsigned char pStpDspTm_Dtr[1]=*/    {1},                     // 1byte 循显间隔时间:1s         NN   s       				
/*18*/  /* unsigned char pOpnClsLcd_Dtr[4]=*/  {0x00,0x06,0x00,0x23},    // 4byte 开显示/关显示时间08:00~23:00  hhmm-hhmm	时分-时分			
    /* unsigned int  pRttDspNo_Dtr[16]=*/
    {0x9010,0x0000,0xC33F,0x0000,0xC011,0x9410,0xC010,0,0,0,0,0,0,0,0,0},     // 32byte 16项个正常显示序号存放区序号				



/*01*/  /* unsigned char pParamtA_Dtr[2]=*/     {0,0},                    // 2byte 参量A([1]电池电压、[0]脉冲数				
/*02*/  /* unsigned char pParamtB_Dtr[2]=*/     {0,0},                    // 2byte 参量B(电量显示位数可设置,)				

/*03*/  /* unsigned char pParamtC_Dtr[2]=*/     {0,0},                    // 2byte 参量C				
/*05*/  /* unsigned char pMtNo_Dtr[6]=*/     {0x56,0x34,0x12,0,0,0},      // 6byte 表号为:123456              NNNNNNNNNNNN				
/*06*/  /* unsigned char pUsrNo_Dtr[6]=*/    {0x01,0,0,0,0,0},           // 6byte 用户号:1          NNNNNNNNNNNN				
/*07*/  /* unsigned char pDvcNo_Dtr[6]=*/    {0x02,0,0,0,0,0},           // 6byte 设备号:2          NNNNNNNNNNNN				

/*10*/  /* unsigned char pAUtRdTm_Dtr[2]=*/     {0x23,0x28},              // 2byte 自动抄表日期:每月28日23时    DDhh  日.时         				
/*11*/  /* unsigned char pInitEngy_Dtr[4]=*/    {0,0,0,0},               // 4byte 电量底数:0	

/*12*/                                                  // 30byte 10个时段(日时段表集合)
    /* unsigned char pTmSctCnt_Dtr[1]=*/  {10},                      // 1byte 日时段数	
    /* unsigned char pFvCnt_Dtr[1]=*/     {4},                       // 1byte 日费率数
    /* unsigned char pTbl1_Dtr[3]=*/      {0x03,0x00,0x08},          // 3byte  第一时段8点钟开始,费率为3(平)            				
    /* unsigned char pTbl2_Dtr[3]=*/      {0x02,0x00,0x14},          // 3byte  第二时段14点钟开始,费率为3(峰)            				
    /* unsigned char pTbl3_Dtr[3]=*/      {0x04,0x00,0x20},          // 3byte  第三时段20点钟开始,费率为3(谷)
    /* unsigned char pTbl4_Dtr[3]=*/      {0,0,0},                   // 3byte  第四时段为"空"
    /* unsigned char pTbl5_Dtr[3]=*/      {0,0,0},                   // 3byte  第五时段为"空"
    /* unsigned char pTbl6_Dtr[3]=*/      {0,0,0},                   // 3byte  第六时段为"空"
    /* unsigned char pTbl7_Dtr[3]=*/      {0,0,0},                   // 3byte  第七时段为"空"
    /* unsigned char pTbl8_Dtr[3]=*/      {0,0,0},                   // 3byte  第八时段为"空"
    /* unsigned char pTbl9_Dtr[3]=*/      {0,0,0},                   // 3byte  第九时段为"空"
    /* unsigned char pTbl10_Dtr[3]=*/     {0,0,0},                   // 3byte  第十时段为"空"


    /* unsigned int pKeyDspNo_Dtr[16]=*/                        // 32byte 16项按键显示序号存放区序号       				
    {0x9010,0x9012,0x9013,0x9014,0xC011,0xC010,0xC032,0xC030, 0x9410,0x9412,0x9413,0x9414,0xC33F,0xC117,0xCD14,0},


/*15*/  /* unsigned char pDate_SttWntr[3]=*/          {0,0x01,0x11},                         // 3byte 冬季开始日期      (NN为00)11.01.00				
/*16*/  /* unsigned char pDate_EndWntr[3]=*/          {0,0x01,0x04},                         // 3byte 冬季结束日期      (NN为00)04.01.00				
/*17*/  /* unsigned char pPassWd00_Dtr[4]=*/          {0,1,1,1},                           // 4byte 密码权限及密码:11111100    NNNNNNNN 				
/*19*/  /* unsigned char pComposerPassword_Dtr[4]=*/  {0x08,0x10,0x62,0x19},        // 4byte 密码(设计者专用):19621008    NNNNNNNN 				
                                             {0x1E,0x07},                       // 2Byte CF1高频脉冲常数(有功)                 28H
                                             {0x1E,0x07}                        // 2Byte CF2高频脉冲常数(无功)                 28H

};


#define Prom_ParAdr  (unsigned int)(&PromParamtTree.pMtCt_Dtr[0])      //PROM中的参数地址
//-------------------------------------------------------------------------------------------------------------------------------------------

 /*
#define structlen   500

 #if   sizeof SysDataTree>100;    //取最大空间
   #error  "\error--e2prom over!\n"
 #endif

*/

//============================================================================================================
//       系统数据地址指针均以int整型数据操作
//       idata 地址用原值,xdata 地址在原值上+ 0x4000,e2prom 地址在原值上+ 0x8000

unsigned char DataAdrCheck(unsigned int data)
{
  switch (data & (~All_RAM))
  {
    case iRAM_Adr:
      return iRAM;

    case xRAM_Adr:
      return xRAM;

    case e2RAM_Adr:
      return e2RAM;

    case pROM_Adr:
      return pROM;

    default :
      return 0xff;
  }
}


//------------------------------------------------------------------------------------------------
/*
 摘    要: 将一个数据写入到存储介质中
 输    入:1、 数据的地址(idata 或 xdata  ),介质物理地址
           2、 读取数据所在存储介质类别(idata、xdata  )
 输    出: 无返回
*/

 void PutData_Api(unsigned char data,unsigned int DataAdr,unsigned char DaAtt)
 {
     unsigned char __idata *iCp;
     unsigned char *xCp;

     if (DaAtt == iRAM)
     {
        iCp = (unsigned char __idata *)((unsigned char )(DataAdr & 0xff));         //iRAM指针
        *iCp = data;
     }
     else if (DaAtt == xRAM)
     {
        xCp = (unsigned char *)(DataAdr & 0xff);                          //xRAM指针
        *xCp = data;
     }
  }


//------------------------------------------------------------------------------------------------
/*
 摘    要: 从存储介质中读出一个数据
 输    入:1、 数据的地址(idata 或 xdata 或 PROM ),介质物理地址
           2、 读取数据所在存储介质类别(idata、xdata 、 PROM )
 输    出: 函数返回读出的结果(char类型),值为EE代表读出错误
*/


 unsigned char GetData_Api(unsigned int DataAdr,unsigned char DaAtt)
 {
     unsigned char __idata *iCp;
     unsigned char __xdata *xCp;
     const unsigned char __code  *oCp;

     if (DaAtt == iRAM)
     {
        iCp = (unsigned char __idata *)((unsigned char )DataAdr);         //iRAM指针
        return (*iCp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -