📄 sysdatatree(eric).c
字号:
/*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 + -