亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtc.c

?? FE42X單相防竊電電表DEMO(編譯器 AQ430 AQ430 V2.0.6.5)
?? C
字號:
/********************************************************************************
*					           杭州利爾達                                       *
*                 MSP430FE42X單相防竊電多功能電表平臺                           *
*                          -----  ESP SD16實現                                  *
*                                                                               *
*                                                                               *
* 說明:本軟件為杭州利爾達單相防竊電多功能電表DEMO軟件                          *
*                                                                               *
*********************************************************************************/


#include "msp430xe42x.h"
#include "emeter_cfg.h"
#include "globe.h"


#define	RTC_INCONSISTENT 0
#define RTC_CHANGED_SECOND 1
#define RTC_CHANGED_MINUTE 2
#define RTC_CHANGED_HOUR 3
#define RTC_CHANGED_DAY 4
#define RTC_CHANGED_MONTH 5
#define RTC_CHANGED_YEAR 6

// 實時時鐘偏差值 PPM*1000
static int32 rtc_correction;



const int8 month_lengths[13] =
{
	00,
	31, 28, 31,
	30, 31, 30,
	31, 31, 30,
	31, 30, 31
};

void set_rtc_sumcheck(void)
{
	rtc.sumcheck = ~(rtc.second + rtc.minute + rtc.hour + rtc.day + rtc.month + rtc.year);
}

/* This can be used to check the integrity of the RTC after a reset */
int check_rtc_sumcheck(void)
{
	return rtc.sumcheck == ((~(rtc.second + rtc.minute + rtc.hour + rtc.day + rtc.month + rtc.year)) & 0xFF);
}

/* Bump the RTC by a second, and return an indication of the most significant
   element of the date to have changed. Maintain a sumcheck byte to help check
   for corrupted RTC settings after a reset. */
int bump_rtc(void)
{
	/* First check the consistency of the current rtc setting. If it is inconsistent,
	   (i.e. has a bad sumcheck) do not bump it. */
	if (!check_rtc_sumcheck())
		return RTC_INCONSISTENT;
    if (++rtc.second < 60)
    {
    	set_rtc_sumcheck();
    	return RTC_CHANGED_SECOND;
    }
    rtc.second = 0;
    if (++rtc.minute < 60)
    {
    	set_rtc_sumcheck();
		return RTC_CHANGED_MINUTE;
    }
    rtc.minute = 0;
    if (++rtc.hour < 24)
    {
    	set_rtc_sumcheck();
		return RTC_CHANGED_HOUR;
    }
    rtc.hour = 0;
    if ((rtc.month == 2  &&  (rtc.year & 3) == 0  &&  rtc.day < 29)
    	||
    	rtc.day < month_lengths[rtc.month])
    {
        ++rtc.day;
    	set_rtc_sumcheck();
		return RTC_CHANGED_DAY;
 	}
    rtc.day = 1;
    if (++rtc.month <= 12)
    {
    	set_rtc_sumcheck();
    	return RTC_CHANGED_MONTH;
    }
    rtc.month = 1;
   	++rtc.year;
    set_rtc_sumcheck();
	return RTC_CHANGED_YEAR;
}



/* Return the current day of the week, based on the RTC. */
int weekday(void)
{
	int i;
    int days;

	/* This works for years 2000-2099 */
	/* Result is 0=Sunday, 1=Monday, etc. */
    /* Allow for the day of the month */
	days = rtc.day + 6;
    /* Allow for the months to date this year... */
	for (i = 1;  i < rtc.month;  i++)
		days += month_lengths[i];
    /* ...with a little offset if we are early in a leap year */
	if ((rtc.year & 0x03) == 0  &&  rtc.month <= 2)
		days--;
    /* Allow for the years... */
	days += rtc.year;
    /* ...and a little extra for the leap years */
	days += (rtc.year >> 2);
	days %= 7;
	return days;
}

void rtc_bumper(void)
{
    int i;

    i = bump_rtc();
	/* And now, a series of optional routines to get actions to take
	   place at various intervals. Remember, we are in an interrupt
	   routine. Do not do anything very complex here. If a complex action
	   is needed set a flag in a simple routine and do the main work in
	   the non-interrupt code's main loop. */
#if BATTERY_MONITOR_SUPPORT
	if (i >= RTC_CHANGED_MINUTE)
		test_battery();
#endif

#if PER_SECOND_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_SECOND)
		per_second_activity();	
#endif
#if PER_MINUTE_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_MINUTE)
		per_minute_activity();
#endif
#if PER_HOUR_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_HOUR)
		per_hour_activity();	
#endif
#if PER_DAY_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_DAY)
		per_day_activity();	
#endif
#if PER_MONTH_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_MONTH)
		per_month_activity();	
#endif
#if PER_YEAR_ACTIVITY_SUPPORT
	if (i >= RTC_CHANGED_YEAR)
		per_year_activity();	
#endif
}
void correct_rtc(void)
{
    int32 temp =0;
    temp = emeter.i_temperature - emeter.ul_TempSampleOffset;
    temp = ((((float)temp)/32768.0) * 640.0 - 343.349)/1.257 + 0.5 ; //	加0.5,四舍五入
    emeter.i_last_temperature = (int16)temp; // 此時已經是一個攝氏溫度值, 用于LCD顯示
    
    temp -= 25;
    temp = temp*temp*35*CORRECT_TIME;
    temp = -temp;
   
    /* 晶體的基本偏差,也就是在常溫時25攝氏度時,晶體偏差 */
    /* 為了方便處理,在程序中,我們對偏差,包括溫度引起的和基本偏差,都放大1000倍 */
    temp += CRYSTAL_BASE_CORRECTION;
    if (rtc_correction >= 0)
    {
        rtc_correction += temp;
        if (rtc_correction >= 1000000000)
        {
            rtc_correction -= 1000000000;
            /* 累計偏差已達到1秒,我們需要跳過一秒 */
            emeter.ui_meter_status |= SKIP_A_SECOND;
        }
    }
    else
    {
        rtc_correction += temp;
        if (rtc_correction <= -1000000000)
        {
            rtc_correction += 1000000000;
            /* 累計偏差已達到1秒,我們需要額外增加一秒 */
            rtc_bumper();
        }
    }
}
/* 定義非初始化全局變量 */
#pragma +norom1
struct rtc_s rtc;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩综合| 国产精品1区2区3区在线观看| 日本不卡不码高清免费观看| 国产99久久精品| 正在播放一区二区| 亚洲激情自拍偷拍| 国产成人精品aa毛片| 日韩一区二区在线观看| 亚洲国产精品综合小说图片区| 成人午夜在线播放| 久久奇米777| 久久福利资源站| 91精品一区二区三区久久久久久 | 国产成人亚洲精品狼色在线| 欧美日韩国产系列| 亚洲激情成人在线| av在线不卡电影| 国产欧美精品区一区二区三区| 麻豆91在线看| 欧美大胆人体bbbb| 午夜精品影院在线观看| 欧美亚洲愉拍一区二区| 一区二区三区在线观看欧美| 99久久er热在这里只有精品66| 国产欧美日韩综合精品一区二区| 精品一二线国产| 精品国产a毛片| 国产一区二区三区久久悠悠色av| 精品剧情v国产在线观看在线| 日韩电影在线一区二区| 欧美精品tushy高清| 性做久久久久久久免费看| 欧美色老头old∨ideo| 亚洲国产视频直播| 91精品一区二区三区久久久久久| 日韩黄色在线观看| 精品三级在线看| 国产二区国产一区在线观看| 国产日韩欧美高清| 91色视频在线| 午夜精品福利久久久| 91精品免费在线观看| 人人狠狠综合久久亚洲| 26uuu亚洲| 波多野结衣亚洲一区| 亚洲欧美综合色| 欧美色男人天堂| 久久精品免费观看| 欧美国产禁国产网站cc| 99久久夜色精品国产网站| 一区二区三区四区av| 91精品国产黑色紧身裤美女| 久久成人18免费观看| 国产精品人人做人人爽人人添| 91视频.com| 蜜臀av性久久久久蜜臀aⅴ| 久久精品视频免费观看| 国产酒店精品激情| 琪琪久久久久日韩精品| 精品国产污污免费网站入口 | 亚洲欧美另类在线| 欧美日韩综合在线免费观看| 久久精品久久99精品久久| 中文字幕国产一区| 欧美老年两性高潮| 久久99精品久久久久久久久久久久 | 亚洲h精品动漫在线观看| 日韩一区二区三区电影在线观看| 国产精品18久久久| 亚洲成a人片综合在线| 久久久国产一区二区三区四区小说 | 国产欧美精品国产国产专区| 欧美性一二三区| 国产99久久久国产精品潘金| 性做久久久久久免费观看| 中文字幕第一区二区| 欧美一卡二卡在线观看| 99久久精品一区| 国产原创一区二区三区| 亚洲一级二级三级| 中文字幕在线视频一区| 精品国产免费一区二区三区四区| 一本一道综合狠狠老| 国产一区二区三区四| 午夜精品aaa| 亚洲嫩草精品久久| 国产三级精品视频| 精品理论电影在线| 在线综合+亚洲+欧美中文字幕| 色婷婷综合久久久久中文 | 丁香激情综合五月| 久久精品理论片| 日本在线不卡一区| 亚洲综合精品自拍| 亚洲三级电影网站| 中文字幕在线一区免费| 久久影院午夜论| 日韩欧美精品三级| 欧美一区二区三区啪啪| 色拍拍在线精品视频8848| 成人国产视频在线观看| 国产在线精品免费| 国产美女在线观看一区| 久久99久久99精品免视看婷婷 | 欧美一区二区三级| 91精品国产综合久久精品图片| 欧美网站一区二区| 欧美三级午夜理伦三级中视频| 色综合久久中文字幕| 99视频一区二区| av在线不卡电影| 成人av网站在线观看免费| 国产成人av电影在线| 成人性视频网站| 不卡大黄网站免费看| av电影在线不卡| 岛国av在线一区| heyzo一本久久综合| 成人久久18免费网站麻豆| 不卡一区二区中文字幕| 99久久免费国产| 欧美自拍偷拍午夜视频| 精品视频全国免费看| 91精品视频网| 久久精品夜色噜噜亚洲aⅴ| 国产女人18毛片水真多成人如厕 | 首页国产欧美久久| 麻豆成人免费电影| 国产高清不卡一区| 色老头久久综合| 欧美一级在线免费| 国产女同性恋一区二区| 亚洲欧美日韩在线不卡| 午夜欧美电影在线观看| 精品系列免费在线观看| 粉嫩高潮美女一区二区三区 | 一区二区三区美女| 日本中文在线一区| 国产.欧美.日韩| 在线观看亚洲一区| 精品国产人成亚洲区| 中文字幕欧美日韩一区| 一区二区高清在线| 国产真实乱偷精品视频免| 成+人+亚洲+综合天堂| 欧美男女性生活在线直播观看| 亚洲精品一区二区精华| 亚洲视频小说图片| 久久精品二区亚洲w码| 99精品欧美一区二区三区小说| 欧美怡红院视频| 久久久久国产精品人| 亚洲免费观看高清完整版在线| 日韩av成人高清| 99久久婷婷国产精品综合| 欧美美女网站色| 中文字幕日韩一区| 精品中文字幕一区二区小辣椒| 99久久99久久精品免费看蜜桃 | 精品视频在线视频| 国产精品视频一二三区| 日韩中文字幕一区二区三区| 国产ts人妖一区二区| 欧美一区二区三区日韩| 一区二区三区四区国产精品| 国产精品一品视频| 欧美一区二区国产| 一卡二卡三卡日韩欧美| 国产成人免费视频精品含羞草妖精| 欧美在线观看视频一区二区| 亚洲国产高清aⅴ视频| 久久草av在线| 91精品国产综合久久久蜜臀粉嫩| 国产精品国产自产拍高清av王其 | 久久久一区二区| 天堂蜜桃91精品| 91精品1区2区| 最近日韩中文字幕| 成人激情免费视频| 久久综合国产精品| 日本不卡一二三| 欧美日韩高清一区二区不卡| 国产精品成人一区二区三区夜夜夜 | www.亚洲色图.com| 日本一区免费视频| 福利电影一区二区三区| 日韩三级高清在线| 日韩va欧美va亚洲va久久| 91极品视觉盛宴| 一区二区三区欧美亚洲| 色综合天天综合网国产成人综合天 | 色婷婷综合在线| 成人免费一区二区三区视频| 国产凹凸在线观看一区二区| 精品sm在线观看| 国产成人综合在线播放| 国产亚洲欧美一区在线观看| 国产真实乱对白精彩久久| 精品国产制服丝袜高跟| 国内精品第一页|