📄 sys_event.c
字号:
#include "includes.h"
unsigned char RequirePowerTime=0;
unsigned char CurrentMinute;
unsigned char RequireCycleCnt=0;
unsigned char SignalOutPutFlag = 0;
void _sys_evt_add(unsigned short event)
{
_disable_interrupt();
SystemIndication |= event;
_enable_interrupt();
}
void _sys_evt_del(unsigned short event)
{
_disable_interrupt();
SystemIndication &=~ (event|EVENT_REVERSED);
_enable_interrupt();
}
void _on_comm(void)
{
SysParseFrame();
}
void _on_view_page(void)
{
if( DISPLAY_PAGE_DOWN == UserKeyDownNum )
{
OnDisplayPageDown();
}
else if( DISPLAY_PGAE_UP == UserKeyDownNum )
{
OnDisplayPageUp();
}
else if( ACTIVE_PROGRAM == UserKeyDownNum )
{
ActiveProgram();
}
UserKeyDownNum = 0;
LcdDisplayOpen();
DisplayRefresh();
AlarmSoundCancle();
}
uchar ClacSleepTimeSec_And_Getsystime(void)
{
uchar pasttime,nowtime;
pasttime =Bcd2HexChar(SystemTime[SPACE_OF_SECOND]);
GetSystemTime();
nowtime = Bcd2HexChar(SystemTime[SPACE_OF_SECOND]);
if( pasttime <= nowtime )
{
pasttime = nowtime -pasttime;
}
else
{
pasttime = 60 - pasttime + nowtime;//计算休眠时的时间
}
return pasttime;
}
void _on_seconds(void)
{
ushort pasttime = 1;
unsigned char temp = 6;
if( !( PowerStateFlag & PS_BREAKPOWER_FLAG ) || ( TimerCounter[TIMER_PROC_LCD_RESET] ) )
{
if( ++ SystemTimeSecCnt >= 60 )
{
GetSystemTime();
}
else
{
SystemTime[SPACE_OF_SECOND] = Hex2BcdChar(SystemTimeSecCnt);
}
}
else
{
pasttime = (ushort)ClacSleepTimeSec_And_Getsystime();
SystemTimeSecCnt = Bcd2HexChar( SystemTime[SPACE_OF_SECOND] );
}
RedundancyTimer(pasttime);
DealCoverCounterTimer(pasttime);
if( !( PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
if( !( SystemIndication & EVT_INIT_ATT702X ) )
{
PhaseVoltageDetect();
if( ( SystemTimeSecCnt % 3 ) == 0 )
{
ReadLinePowerFromAtt7022B();
}
Att702xSeqErrDet();
}
CalcEnergyData();
SaveWattOverload();
SaveReqOverload();
SaveWattReverse();
}
else
{
LCDMEM[15] = ( LCD_SY_INFO_N1|LCD_SY_INFO_N2|LCD_SY_INFO_N3|LCD_SY_INFO_N4|LCD_SY_INFO_M2 );
}
if( CurrentMinute != SystemTime[SPACE_OF_MINUTE] )
{
CurrentMinute = SystemTime[SPACE_OF_MINUTE];
_on_minute();
if( !(PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
SysRecLoadCurve();
}
}
PowerSupplierDetect();
TariffDetect();
CrossHourDetect();
if( !( PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
CrossDayDetect();
BillingDetect();
}
Alarm();
LcdDisplayControl((uchar)pasttime);
}
void _on_minute(void)
{
unsigned char temp[2];
if( !( PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
SaveEnergyMin();
RequirePowerTime++;
if( RequirePowerTime >= _SysPotInfo.reqtime_huacha )
{
CalcMaxDemand();
}
if( !( SystemIndication & EVT_INIT_ATT702X ) )
{
CalcDayDataInfo();
}
Att702xValidityCheck();
FramRead( ADDR_OF_POWER_FREEZE_TIME, (unsigned char *)&temp[0], 2 );
if( IsEqual( (unsigned char *)&temp[0], (unsigned char *)&SystemTime[SPACE_OF_MINUTE], 2 ) == OK )
{
SaveInstanPowerData();
}
FramWrite( ADDR_OF_SYSTIME_START, &SystemTime[1], SYSTIME_SIZE );
RequireCycleCnt++;
if( RequireCycleCnt == _SysPotInfo.reqtime )
{
RequireCycleCnt = 0;
SignalOutPutFlag |= BIT1;
}
}
}
void _on_break_power(void)
{
PowerSupplierDetect();
}
void _on_init_att702x(void)
{
Att702xReinit();
TimerCounter[TIMER_PROC_CHECK_ATT702X] = 1;
}
void _on_uart_init(void)
{
SRMK6 = 1;
SRMK0 = 1;
FramePointer = 0;
CommPortChose = 0;
_wait_time = 0;
Uart0StartToRx();
Uart2StartToRx();
}
void _on_15_minutes(void)
{
#ifdef _TEMPERATURE
GetTemperature();
#endif
}
void _on_tick(void)
{
if( PowerStateFlag & PS_BREAKPOWER_FLAG )
{
if( ( SystemTimeSecCnt % 10 ) == 0 )
{
if( BasicTimerTick < 1 )
{
IR_ON_PD();
return;
}
}
if( CommPortChose == 0 )
{
if( ( TimerCounter[TIMER_PROC_IR_TOGGLE] == 0 )
&& ( TimerCounter[TIMER_PROC_LCD_RESET] == 0 ) )
{
IR_OFF_PD();
}
}
}
}
void _on_read_power1(void)
{
if( !( SystemIndication & EVT_INIT_ATT702X ) )
{
ReadActivePowerFromAtt702x();
}
}
void _on_read_power2(void)
{
if( !( SystemIndication & EVT_INIT_ATT702X ) )
{
ReadReActivePowerFromAtt702x();
}
}
void _on_remote_control(void)
{
IrKeyDispose();
_sys_evt_add( EVT_INIT_COMM );
}
void _on_clr_reqdata(void)
{
SaveManualReadData();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -