bool CLU57813P::init(void) { lastDateTime = QDateTime::currentDateTime(); datetime.seconds = HEX2BCD(lastDateTime.time().second()); /* seconds BCD */ datetime.minutes = HEX2BCD(lastDateTime.time().minute()); /* minutes BCD */ datetime.hours = HEX2BCD(lastDateTime.time().hour()); /* hours BCD */ datetime.days = HEX2BCD(lastDateTime.date().day()); /* days BCD */ datetime.weekday = 0; /* weekday BCD */ datetime.month = lastDateTime.date().month(); /* month Hexadecimal form */ bitno = 0; prev_mode = 0x10; tp = 0; TP_FREQUENCY=1; previous_state = 0; previous_state_tp = 0; Kon = false; output_pending = false; cmd = 0; irq = 0; irq_mask = 0; tpIndex64 = pPC->pTIMER->initTP(64); tpIndex2 = pPC->pTIMER->initTP(2); memset(password,0,0x10); sp = 0; return(1); }
void rtc_set (struct rtc_time* tm) { if(tm->tm_year < 2000) tm->tm_year -= 1900; else tm->tm_year -= 2000; RTCCON |= 1; BCDYEAR = HEX2BCD(tm->tm_year); BCDMON = HEX2BCD(tm->tm_mon); BCDDAY = HEX2BCD(tm->tm_mday); BCDDATE = HEX2BCD(tm->tm_wday); BCDHOUR = HEX2BCD(tm->tm_hour); BCDMIN = HEX2BCD(tm->tm_min); BCDSEC = HEX2BCD(tm->tm_sec); RTCCON &= 1; }
{0x00,0x04000b01},//结算日 }; #define KEY_SCREEN_NUM 86 #endif #pragma pack() #define HEX2BCD(X) ((X)/10*16 + (X)%10) //显示相关参数 CONST INT8U Def_04000301_5[] = { HEX2BCD(AUTO_SCREEN_NUM),//0x06, //自动循环显示屏数 0x05, //每屏显示时间 0x02, //显示电能小数位 0x04, //显示功率小数位 HEX2BCD(KEY_SCREEN_NUM)//0x22, //按键循环显示屏数 }; //定时冻结时间 CONST INT8U Def_Period_Freeze_Time[] = { 0x00, 0x00, 0x99, 0x99 }; //00秒脉冲 //01需量周期