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

📄 load_curve.c

📁 NEC527多功能电表完整源代码,包括LCD驱动,显示,计量,存储,整个527驱动程序!
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "includes.h"

unsigned long SumLoadCurvePagePointer = 0;
sreg unsigned short LoadCurvePagePointer = 0;
sreg unsigned char LoadCurvePointer = 0;

const unsigned char load_curve_item_len[]={4,4,4,4,4,4,4,4,4,4,4,4,6,9,12,12,6,4,4,2,2,16,18};
const unsigned char load_curve_save_pos[]={9,13,17,21,25,29,33,37,41,45,49,53,57,63,72,84,96,102,106,110,112,114,130};

static void _load_curve_proc01(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 0 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[0];
    FramWrite( addr, (unsigned char *)&temp, 4 );
}

static void _load_curve_proc02(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 5 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[1];
    FramWrite( addr, (unsigned char *)&temp, 4 );
}

static void _load_curve_proc03(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 10 );	
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[2];
    FramWrite( addr, (unsigned char *)&temp, 4 );    			
}

static void _load_curve_proc04(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 15 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[3];
    FramWrite( addr, (unsigned char *)&temp, 4 );
}

static void _load_curve_proc05(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 20 );
    temp = Bcd2HexLong( temp );
    addr =(ushort) DI1DI0+load_curve_save_pos[4];
    FramWrite( addr, (unsigned char *)&temp, 4 );    		
}

static void _load_curve_proc06(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 25 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[5];    
    FramWrite( addr, (unsigned char *)&temp, 4 );
}

static void _load_curve_proc07(void)
{
    unsigned long temp;
    unsigned short addr;	
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 30 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[6];
    FramWrite( addr, (unsigned char *)&temp, 4 );    		
}

static void _load_curve_proc08(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 40 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[7];
    FramWrite( addr, (unsigned char *)&temp, 4 );    		
}

static void _load_curve_proc09(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 45 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[8];
    FramWrite( addr, (unsigned char *)&temp, 4 );    		
}

static void _load_curve_proc10(void)
{
    unsigned long temp;
    unsigned short addr;
	
    LoadEnergy( ( unsigned char *)&temp, 0xFF, 35 );
    temp = Bcd2HexLong( temp );
    addr = (ushort)DI1DI0+load_curve_save_pos[9];
    FramWrite( addr, (unsigned char *)&temp, 4 );    		
}

static void _load_curve_proc11(void)
{
    unsigned long inst_demand=0;
    unsigned short addr;
	
    CalcInstDemand( (unsigned char *)&inst_demand, 0 );
    inst_demand = Bcd2HexLong( inst_demand );
    addr = (ushort)DI1DI0+load_curve_save_pos[10];
    FramWrite( addr, (unsigned char *)&inst_demand, 4 ); 	    	
}

static void _load_curve_proc12(void)
{
    unsigned long inst_demand=0;
    unsigned short addr;
	
    CalcInstDemand( (unsigned char *)&inst_demand, 3 );
    inst_demand = Bcd2HexLong( inst_demand );
    addr = (ushort)DI1DI0+load_curve_save_pos[11];
    FramWrite( addr, (unsigned char *)&inst_demand, 4 ); 	    	
}

static void _load_curve_proc13(void)
{
    unsigned short temp[3];
    unsigned short addr;
	
    temp[0] = (unsigned short)(CurrentVI[0]*10);
    temp[1] = (unsigned short)(CurrentVI[1]*10);
    temp[2] = (unsigned short)(CurrentVI[2]*10);
    addr=(ushort)DI1DI0+load_curve_save_pos[12];
    FramWrite( addr, (unsigned char *)&temp[0], 6 );
}

static void _load_curve_proc14(void)
{
    unsigned long temp=0;
    unsigned short addr;
    unsigned char ii;

    for( ii = 0; ii < 3; ii++ )
    {
        addr = (ushort)DI1DI0+load_curve_save_pos[13]+ii*3;
        temp = (unsigned long)CurrentVI[3+ii]*10;
        FramWrite( addr, (unsigned char *)&temp, 3 );
    }
}

static void _load_curve_proc15(void)
{
    unsigned long instanpwr[3];
    unsigned short addr;	
    unsigned char ii;	

    for( ii = 0; ii < 3; ii++ )
    {
        CalcInstantPower( ( unsigned char *)&instanpwr[ii], ii+1 );
        instanpwr[ii] = Bcd2HexLong( instanpwr[ii] );
    }
    addr = (ushort)DI1DI0+load_curve_save_pos[14];
    FramWrite( addr, (unsigned char *)&instanpwr[0], 12 );
}

static void _load_curve_proc16(void)
{
    unsigned long instanpwr[3];
    unsigned short addr;	
    unsigned char ii;	

    for( ii = 0; ii < 3; ii++ )
    {
        CalcInstantPower( ( unsigned char *)&instanpwr[ii], ii+5 );
        instanpwr[ii] = Bcd2HexLong( instanpwr[ii] );
    }
    addr = (ushort)DI1DI0+load_curve_save_pos[15];
    FramWrite( addr, (unsigned char *)&instanpwr[0], 12 );       	
}

static void _load_curve_proc17(void)
{
    unsigned short instanfatcor[3];
    unsigned short addr;	
    unsigned char ii;

    for( ii = 0; ii < 3; ii++ )
    {
        instanfatcor[ii] = GetPowerFactor( ii+1 );
        instanfatcor[ii] = Bcd2HexShort( instanfatcor[ii] )*10;
    }
    addr = (ushort)DI1DI0+load_curve_save_pos[16];    
    FramWrite( addr, (unsigned char *)&instanfatcor[0], 6 );       		
}

static void _load_curve_proc18(void)
{
    unsigned long instanpwr;
    unsigned short addr;
	
    CalcInstantPower( (unsigned char *)&instanpwr, 0 );
    instanpwr = Bcd2HexLong( instanpwr );
    addr = (ushort)DI1DI0+load_curve_save_pos[17];    
    FramWrite( addr, (unsigned char *)&instanpwr, 4 );
}

static void _load_curve_proc19(void)
{
    unsigned long instanpwr;
    unsigned short addr;
	
    CalcInstantPower( (unsigned char *)&instanpwr, 4 );
    instanpwr = Bcd2HexLong( instanpwr );
    addr = (ushort)DI1DI0+load_curve_save_pos[18];
    FramWrite( addr, (unsigned char *)&instanpwr, 4 );
}

static void _load_curve_proc20(void)
{
    unsigned short instanfatcor;
    unsigned short addr;
	
    instanfatcor = GetPowerFactor( 0 );
    instanfatcor = (ushort)Bcd2HexLong( instanfatcor )*10;
    addr = (ushort)DI1DI0+load_curve_save_pos[19];
    FramWrite( addr, (unsigned char *)&instanfatcor, 2 );	
}

static void _load_curve_proc21(void)
{
    unsigned short instanfreq;
    unsigned short addr;
	
    GetFreq();
    instanfreq = Bcd2HexShort( CurrentFreq )*10;
    addr = (ushort)DI1DI0+load_curve_save_pos[20];	
    FramWrite( addr, (unsigned char *)&instanfreq, 2 );	    	
}

static void _load_curve_proc22(void)
{
    unsigned long temp[4];
    unsigned short addr;	
    unsigned char ii;

    for( ii = 0; ii < 4; ii++ )
    {
        LoadEnergy( (unsigned char *)&temp[ii], 0xFF, ii+1 );
        temp[ii] = Bcd2HexLong( temp[ii] );
    }
    addr = (ushort)DI1DI0+load_curve_save_pos[21];
    FramWrite( addr, (unsigned char *)&temp[0], 16 );	    	 	
}

static void _load_curve_proc23(void)
{
    unsigned long temp = 0;
    unsigned short addr;
    unsigned char ii;
 
    for( ii = 0; ii < 6; ii++ )
    {
        CalcVoltageAngle( (unsigned char *)&temp, ii );
        temp = Bcd2HexLong( temp );
        addr = (unsigned short)( DI1DI0+load_curve_save_pos[22]+ii*3 );
        FramWrite( addr, (unsigned char *)&temp, 3 );
    }	   
}

const PROC_FUNC load_curve_proc[]={
    _load_curve_proc01,
    _load_curve_proc02,
    _load_curve_proc03,
    _load_curve_proc04,
    _load_curve_proc05,
    _load_curve_proc06,
    _load_curve_proc07,
    _load_curve_proc08,
    _load_curve_proc09,
    _load_curve_proc10,
    _load_curve_proc11,
    _load_curve_proc12,
    _load_curve_proc13,
    _load_curve_proc14,
    _load_curve_proc15,
    _load_curve_proc16,
    _load_curve_proc17,
    _load_curve_proc18,
    _load_curve_proc19,    

⌨️ 快捷键说明

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