📄 alarm.c
字号:
#include "includes.h"
unsigned char AlarmCtlWord1=0;
unsigned char AlarmCtlWord2=0;
unsigned char AlarmCtlWord3=0;
unsigned char TempAlarmSound1=0;
unsigned char TempAlarmSound2=0;
unsigned char TempAlarmSound3=0;
unsigned char AlarmLightTime=0;
unsigned char AlarmOpenCoverBoard=0;
unsigned char ProgramStatusWord=0;
unsigned char CancleAlarmSoundTime=0;
unsigned short CoverTimerCounter[4]={0,0,0,0};
const unsigned char _SystemTimeRange[]=
{
0x59,//max value of second
0x59,//max value of minute
0x23,//max value of hour
0x06 //max value of week
};
const unsigned char _SystemTimeDayRange[]=
{
0x31,0x29,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31
};
void Alarm(void)
{
unsigned char i, alarm_flag = 0;
unsigned char cover = AlarmOpenCoverBoard&( ALARM_COVER_BOARD_UP | ALARM_COVER_BOARD_DOWN );
if( ProgramStatusWord != DEVICE_OK )
{
AlarmCtlWord1 |= ALARM_OF_PROGRAM;
}
else
{
AlarmCtlWord1 &=~ ALARM_OF_PROGRAM;
}
_disable_interrupt();
ProgramStatusWord = 0;
_enable_interrupt();
if( !( COVER_UP_IN & COVER_UP ) )
{
if( !( cover & ALARM_COVER_BOARD_UP ) )
{
if( CoverTimerCounter[0] == 0 )
{
CoverTimerCounter[0] = 60;
SavePgmInfoToFram( ADDR_OF_COVER_UP_OPEN, 1 );
}
else
{
CoverTimerCounter[0] = 60;
}
cover|=ALARM_COVER_BOARD_UP;
}
}
else
{
if( cover & ALARM_COVER_BOARD_UP )
{
cover &=~ ( ALARM_COVER_BOARD_UP );
}
}
if( COVER_DOWN_IN & COVER_DOWN )
{
if( !( cover & ALARM_COVER_BOARD_DOWN ) )
{
if( CoverTimerCounter[1] == 0 )
{
CoverTimerCounter[1] = 60;
SavePgmInfoToFram(ADDR_OF_COVER_DOWN_OPEN,1);
}
else
{
CoverTimerCounter[1] = 60;
}
cover |= ALARM_COVER_BOARD_DOWN;
}
}
else
{
if( cover & ALARM_COVER_BOARD_DOWN )
{
cover &=(unsigned char)(~ALARM_COVER_BOARD_DOWN);
}
}
if( !( PWR_F1_IN & PWR_F1 ) )
{
if( !( PowerStateFlag & PS_LOWPOWER_FLAG ) )
{
MeterRunningStateWord |= 0x04;
PowerStateFlag |= PS_LOWPOWER_FLAG;
}
AlarmCtlWord1 |= ALARM_OF_BATTARY;
}
else
{
if( PowerStateFlag & PS_LOWPOWER_FLAG )
{
MeterRunningStateWord &=~ (0x04);
PowerStateFlag &=~ ( PS_LOWPOWER_FLAG );
}
AlarmCtlWord1 &=~ ALARM_OF_BATTARY;
}
AlarmCtlWord1 &=~ ALARM_OF_SYSTEM_TIME;
if( IsBcdCode( ( unsigned char * )&SystemTime[SPACE_OF_SECOND], 7 ) == OK )
{
for( i = 0; i < 4; i++ )
{
if( SystemTime[i] > _SystemTimeRange[i] )
{
AlarmCtlWord1 |= ALARM_OF_SYSTEM_TIME;
}
}
if( ( SystemTime[SPACE_OF_MONTH] > 0x12) || ( SystemTime[SPACE_OF_MONTH] == 0 ) )
{
AlarmCtlWord1 |= ALARM_OF_SYSTEM_TIME;
}
if( ( SystemTime[SPACE_OF_DAY] > _SystemTimeDayRange[SystemTime_MonthHex] ) || ( SystemTime[SPACE_OF_DAY] == 0 ) )
{
AlarmCtlWord1 |= ALARM_OF_SYSTEM_TIME;
}
}
else
{
AlarmCtlWord1 |= ALARM_OF_SYSTEM_TIME;
}
LCDMEM[LCD_CN_INFO_ADDR_COVERUP] |= cover;
if( cover != AlarmOpenCoverBoard )
{
FramWrite( ADDR_OF_COVER, &cover, 1);
AlarmOpenCoverBoard = cover;
}
if( PowerStateFlag & PS_LOWPOWER_FLAG )
{
LCDMEM[LCD_CN_INFO_ADDR_LOWPWR] |= LCD_CN_INFO_LOWPWR;
if( _SysPotInfo.alarm_light1 & BIT5 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT5 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT5 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
LCDMEM[LCD_CN_INFO_ADDR_LOWPWR] &=~ LCD_CN_INFO_LOWPWR;
if( TempAlarmSound1 & BIT5 )
{
_SysPotInfo.alarm_sound1 |= BIT5;
}
}
if( AlarmCtlWord1 & ALARM_OF_ISEQERR )
{
if( _SysPotInfo.alarm_light1 & BIT2 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT2 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT2 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
if( TempAlarmSound1 & BIT2 )
{
_SysPotInfo.alarm_sound1 |= BIT2;
}
}
if( LowVIStateWord & 0x07 )
{
if( _SysPotInfo.alarm_light1 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
if( TempAlarmSound1 & BIT0 )
{
_SysPotInfo.alarm_sound1 |= BIT0;
}
}
if( LowVIStateWord & 0x70 )
{
if( _SysPotInfo.alarm_light1 & BIT1 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT1 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT1 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
if( TempAlarmSound1 & BIT1 )
{
_SysPotInfo.alarm_sound1 |= BIT1;
}
}
if( AlarmCtlWord1 & ALARM_OF_DATA_FLASH )
{
if( _SysPotInfo.alarm_light1 & BIT3 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT3 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT3 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
if( TempAlarmSound1 & BIT3 )
{
_SysPotInfo.alarm_sound1 |= BIT3;
}
}
if( AlarmCtlWord1 )
{
if( _SysPotInfo.alarm_light1 & BIT6 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound1 & BIT6 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_1 & BIT6 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
if( AlarmCtlWord2 & ALARM_OF_CURIMBA )
{
if( _SysPotInfo.alarm_light2 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound2 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_SOUND;
}
if( _SysPotInfo.alarm_light2_2 & BIT0 )
{
alarm_flag |= ALARM_FLAG_OF_LIGHT2;
}
}
else
{
if( TempAlarmSound2 & BIT0 )
{
_SysPotInfo.alarm_sound2 |= BIT0;
}
}
if( AlarmCtlWord2 & ALARM_OF_OV_LOAD)
{
if( _SysPotInfo.alarm_light2 & BIT1 )
{
alarm_flag |=ALARM_FLAG_OF_LIGHT;
}
if( _SysPotInfo.alarm_sound2 & BIT1 )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -