📄 measure.c
字号:
/*
************************************************************************
* Measure.c:
*
********************************************************************
*/
#include "include\macro.h"
#include "include\HardConfig.h"
#include "include\SysConfig.h"
#include "include\SubConfig.h"
#include "include\data.h"
#include "include\bitdef.h"
#include "include\FunAnnounce.h"
/*******************************************************************
* AddEnergy() :
********************************************************************/
void AddEnergy(void)
{
uchar data[4];
uchar tmpda[4];
uchar tmpfg;
//bcdINCAdj(&MDP_cnt[0],3); // power sum pluse count increase 1
Sram.PLFCnt++;
Flag.run &= ~bitR_Pulse; // clear energy L_pluse accumulative flag.
MDLoad.buff[MDLoad.ptr]++;
if(Sram.PLFCnt < CONS_METER) return;
Sram.PLFCnt -= CONS_METER;
//total energy sum
BCD1INC(&Sram.T_ENdec);
if(Sram.T_ENdec == 00)
{
MEM_Read(E2P_TENINT, &data[0],4);
bcdINCAdj(&data[1],3);
MEM_Write(E2P_TENINT, &data[0],4);
}
//reverse energy sum
if(Flag.run & bitR_REV)
{
BCD1INC(&Sram.R_ENdec);
if(Sram.R_ENdec == 00)
{
MEM_Read(E2P_RENINT, &data[0],4);
bcdINCAdj(&data[1],3);
MEM_Write(E2P_RENINT, &data[0],4);
}
}
// leave energy sum
MEM_Read(E2P_LENINT, &data[0],4);
data[0] = Sram.L_ENdec;
if((data[0] | data[1] |data[2] |data[3])==0)
{
//down zero energy sum
BCD1INC(&Sram.Z_ENdec);
if(Sram.Z_ENdec == 00)
{
MEM_Read(E2P_ZENINT, &data[0],4);
bcdINCAdj(&data[1],3);
MEM_Write(E2P_ZENINT, &data[0],4);
}
}
else
{
//up zero energy dec
BCD1DEC(&Sram.L_ENdec);
if(Sram.L_ENdec == 0x99)
{
data[0] = Sram.L_ENdec;
bcdDECAdj(&data[1],3);
MEM_Write(E2P_LENINT, &data[0],4);
}
}
}
/*******************************************************************
*ECAdj(): adjust meter energy measure grogram
********************************************************************/
void ECAdj(void)
{
register unsigned char i;
while (Sram.cnt_Eadj < ADJ_TM )
{
pin_EPLOUT = 0;
WDTE=0xAC; // clr WDT
NOP();
}
Flag.run &= ~bitR_Adj; //clear energy adjest status flag.
for(i=0;i<1;i++)
{
Sram.Factor[i] = QUAN/(ulong)Sram.AdjCnt[i];
if((Sram.AdjCnt[i]<3000) & (Sram.AdjCnt[i]>600)) Sram.Adj_Base[i]=Sram.Factor[i];
}
Sram.FactorCK = Get_csckNum((uchar*)&Sram.Factor[0],2);
Sram.Adj_BaseCK = Sram.FactorCK;
MEM_Write(E2P_EADJ, (uchar*)&Sram.Adj_Base[0], 2);
pin_EPLOUT = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -