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

📄 measure.c

📁 本公司的单相CPU卡表的源程序代码
💻 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 + -