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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rtc.c

?? 廠家正規(guī)的boot源代碼
?? C
字號:
#include "def.h"
#include "2410addr.h"
#include "rtcapi.h"
#include "2410lib.h"

#define	TotSecPerDay		86400
#define	TotDaysPerYear		365
#define	TotDaysPer4Year		1461
#define	TotDaysPer100Year	36524
#define	TotDaysPer400Year	146097
#define	GetWeekFromTotDays(days)	(((days)+0)%7)		//1年1月1號(第1天)星期
#define	GetWeek(year, month, day)	(GetWeekFromTotDays(GetTotDays(year, month, day)))	

static U8 monthday[]={31,28,31,30,31,30,31,31,30,31,30,31};

/*************************************************************/
static U32 GetTotDays(U16 year, U16 month, U16 day)
{
	U16 y, y1, y2, y3;
	U32 d=0;	
/*			
	y = year+3;		
	y1 = y/400;
	y2 = (y%400)/100;
	y3 = ((y%400)%100)/4;
	y4 = year-y1*97-y2*24-y3;
	d  = (y1*97+y2*24+(y2?1:0)+y3)*366+y4*365;
*/	
	y  = year-1;	//passed year
	y1 = y/400;
	y2 = (y%400)/100;
	y3 = ((y%400)%100)/4;
	y  = y-y1*97-y2*24-y3;	 
	d  = (y1*97+y2*24+y3)*366+y*365;
	
//		printf("y1 = %d, y2= %d, y3 = %d, %d\n", y1, y2, y3, d);	
	
	for(y1=1; y1<month; y1++)
		d += monthday[y1-1];
	if(RtcIsLeapYear(year)&&(month>2))		
		d++;
//		printf("Total days = %d\n", d+day);
//		getch();	
	return d+day;
}

static void TotDaysToDate(U32 days, DATE_T *date)
{
	U16 y1, y2, y3, y4;
	
	days--;
	y1 = (days/TotDaysPer400Year);
	y2 = ((days%TotDaysPer400Year)/TotDaysPer100Year);
	y3 = (((days%TotDaysPer400Year)%TotDaysPer100Year)/TotDaysPer4Year);
	y4 = (((days%TotDaysPer400Year)%TotDaysPer100Year)%TotDaysPer4Year);
	
	y1 = y1*400+y2*100+y3*4+y4/TotDaysPerYear+1;
	y3 = y4%TotDaysPerYear;
	if(y4==(TotDaysPer4Year-1))
	{
		y1--;
		y3 = TotDaysPerYear;
	}
	if(!((days+1)%TotDaysPer400Year))
	{
		y1--;
		y3 = TotDaysPerYear;
	}
	y2 = 0;
	y3++;		
		
	while(1)
	{
		y4 = monthday[y2++];
		if(RtcIsLeapYear(y1)&&(y2==2))
			y4++;
		if(y3<=y4)
			break;
		y3 -= y4;					
	}
	
	date->year  = y1;
	date->month = y2;
	date->day   = y3;
	date->week  = GetWeekFromTotDays(days+1);
}
/*
void TestRtcFunc(void)
{
	U16 y, m , d, week, MaxDay;
	U32 day, err;
	DATE_T date;	
	
	day = 1;
	err = 0;
	for(y=1; y; y++)
	{
					
		for(m=1; m<13; m++)
		{
			MaxDay = RtcGetDaysOfMonth(y, m);
			for(d=1; d<=MaxDay; d++)
			{											
			//	if(day!=GetTotDays(y, m, d);)
			//	{
			//		printf("error!%d-%d-%d\n", y, m, d);					
			//		err++;					
			//	}					
			
				
			//	week = GetWeekFromTotDays(day);								
			//	TotDaysToDate(day, &date);
			//	if((date.year!=y)||(date.month!=m)||(date.day!=d)||(date.week!=week))
			//	{
			//		printf("error!%d-%d-%d, %d-%d-%d\n", y, m, d, date.year, date.month, date.day);
			//		err++;					
			//	}
			//	//else
			//	//	printf("%d-%d-%d,week%d\n", y, m, d, week);				
			//	if(getkey())
			//	{
			//		if(getch()==0x1b)
			//			goto exit_test;
			//	}
			
			//	if(!RtcCheckDateValid(y, m, d))
			//		printf("Date valid%d\n", ++err);
			//	if(RtcGetWeekNo(y, m, d)!=GetWeekFromTotDays(day))
			//		printf("week error\n");				
			
			//	if(day!=RtcGetPastDays(y, m, d))
			//		printf("err!\n");
			//	if((m==12)&&(d==31))
			//		day = 0;
					
				day++;
			}						
		}
		
		
		{
		//	DATE_T date1, date2;
		//	date1.year=y;
		//	date1.month=3;
		//	date1.day=1;
		//	date2.year=y+1;
		//	date2.month=3;
		//	date2.day=1;
		//	printf("%d-%d-%d, %d-%d-%d : %d\n",date1.year,date1.month,
		//		date1.day, date2.year,date2.month,date2.day,RtcGetDateInterval(&date1, &date2));
		}
		
	}
exit_test:
	if(!err)
		puts("All day OK!\n");
}
*/
/*************************************************************/
/*
功能:判斷某年是不是潤年;
輸入:年;
返回:TRUE或FALSE;
說明:日期為陽歷;  
*/
U8 RtcIsLeapYear(U16 year)
{
	return ((year%4==0)&&(year%100!=0)||(year%400==0));	
}

/*
功能:檢查日期的有效性;
輸入:年,月,日;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷
*/
U8 RtcCheckDateValid(U16 year, U16 month, U16 day)
{
	U8 MaxDay;
	
	if(!year)
		return FALSE;
	
	if((month-1)>11)
		return FALSE;
	
	if(RtcIsLeapYear(year)&&(month==2))
		MaxDay = 28;
	else
		MaxDay = monthday[month-1]-1;
	
	if((day-1)>MaxDay)
		return FALSE;	
				
	return TRUE;
}

/************************************************************/
#define	EnRtcWr()	(rRTCCON |= 1)
#define	DsRtcWr()	(rRTCCON &= ~1)

int RtcGetDate(DATETIME_T *date)
{
	U8 tmp, sec;
	
ReadRtc:
	tmp = rBCDDAY;
	if(tmp==7)
		date->week = 0;
	else
		date->week = tmp;
		
	sec = rBCDSEC;
				
	tmp = rBCDYEAR;
	date->year     = (tmp>>4)*10+(tmp&0xf);
	tmp = rBCDMON;
	date->month    = (tmp>>4)*10+(tmp&0xf);		
	tmp = rBCDDATE;
	date->day      = (tmp>>4)*10+(tmp&0xf);
	tmp = rBCDHOUR;
	date->hour     = (tmp>>4)*10+(tmp&0xf);
	tmp = rBCDMIN;
	date->minute   = (tmp>>4)*10+(tmp&0xf);
	tmp = rBCDSEC;
	if(tmp!=sec)
		goto ReadRtc;			
	date->second   = (tmp>>4)*10+(tmp&0xf);		
	
	date->millisecond = 0;
	
	return TRUE;
}

int RtcSetDate(DATETIME_T *date)
{	
	if(RtcCheckDateValid(date->year, date->month, date->day))
	{
		U16 tmp, week;
		
		if((date->year<2000)||(date->year>2999))
			return FALSE;			
		if((date->hour>23)||(date->minute>59)||(date->second>59))
			return FALSE;		

		week = GetWeek(date->year, date->month, date->day);
	
		//reset RTC clock count and enable write
		rRTCCON = 9;//EnRtcWr();
	
		tmp = date->second;
		rBCDSEC  = ((tmp/10)<<4)+(tmp%10);
		tmp = date->minute;
		rBCDMIN  = ((tmp/10)<<4)+(tmp%10);
		tmp = date->hour;
		rBCDHOUR = ((tmp/10)<<4)+(tmp%10);
		tmp = date->day;
		rBCDDATE = ((tmp/10)<<4)+(tmp%10);					
		tmp = date->month;
		rBCDMON  = ((tmp/10)<<4)+(tmp%10);	
		tmp = date->year-2000;
		rBCDYEAR = ((tmp/10)<<4)+(tmp%10);
	
		if(!week)
			rBCDDAY = 7;
		else	
			rBCDDAY = week;		
	
		//no reset RTC clock and disable write
		rRTCCON = 0;//DsRtcWr();	
	
		return TRUE;
	}
	return FALSE;	
}

/*
RTC的時、分、秒中斷觸發(fā)后,通過下列接口通知OS,OS進行消息封裝后提供給給GUI或應(yīng)用層
輸入:type 標識區(qū)分時、分、秒,具體含義描述如下:
1 ― 時, 2 ― 分, 3 ― 秒
返回:沒有
注意:RtcMsgProc()函數(shù)只能在高級中HISR中被調(diào)用,否則系統(tǒng)異常。
*/
void RtcMsgProc(U8 type)
{
}

/*
功能:計算某一天是星期幾;
輸入:年,月,日;
返回:周號;
說明:周范圍[0,6],0是星期天,日期為陽歷;  
*/
U8 RtcGetWeekNo(U16 year, U16 month, U16 day)
{
	if(!RtcCheckDateValid(year, month, day))
		return 0xff;	
	
	return GetWeek(year, month, day);
}

/*
功能:計算某個月有多少天;
輸入:年,月;
返回:天數(shù);
說明:日期為陽歷;
*/
U8 RtcGetDaysOfMonth(U16 year, U16 month)
{
	if((month-1)>11)
		return 0xff;
	if(RtcIsLeapYear(year)&&(month==2))
		return 29;
	return monthday[month-1];			
}

/*
功能:比較兩個日期時間的先后 
輸入:存放日期時間結(jié)構(gòu)的指針; 
返回:1--date1>date2,0--date1=date2,-1--date1<date2,日期非法 0xf0
說明:日期為陽歷;
*/
char RtcCmpDateTime(DATETIME_T *date1, DATETIME_T *date2) 
{
	if(RtcCheckDateValid(date1->year, date1->month, date1->day)&&
		RtcCheckDateValid(date2->year, date2->month, date2->day))
	{
		U32 d1, d2;
		
		d1 = (date1->year<<16)+(date1->month<<8)+date1->day;
		d2 = (date2->year<<16)+(date2->month<<8)+date2->day;
		if(d1!=d2)
			return (d1>d2)?1:-1;
		d1 = (date1->hour<<16)+(date1->minute<<8)+date1->second;
		d2 = (date2->hour<<16)+(date2->minute<<8)+date2->second;
		if(d1!=d2) 
			return (d1>d2)?1:-1;
		
		return  0;			
	}
	return 0xf0;
}

/*
功能:計算兩個日期之間的間隔天數(shù);
輸入:存放日期結(jié)構(gòu)的指針;
返回:兩個日期之間的間隔天數(shù);
說明:日期為陽歷;  
*/
U32 RtcGetDateInterval(DATE_T *date1, DATE_T *date2)
{
	if(RtcCheckDateValid(date1->year, date1->month, date1->day)&&
		RtcCheckDateValid(date2->year, date2->month, date2->day))
	{	
		U32	d1, d2;
	
		d1 = GetTotDays(date1->year, date1->month, date1->day);
		d2 = GetTotDays(date2->year, date2->month, date2->day);
		
		return (d1>d2)?(d1-d2):(d2-d1);			
	}
	return 0xffffffff;
}
 
/*
功能:計算兩個日期之間的間隔秒數(shù);
輸入:存放日期結(jié)構(gòu)的指針;
返回:兩個日期之間的間隔總秒數(shù);
說明:日期為陽歷
*/
U32 RtcGetTimeInterval(DATETIME_T* pTime1, DATETIME_T *pTime2)
{
	if(RtcCheckDateValid(pTime1->year, pTime1->month, pTime1->day)&&
		RtcCheckDateValid(pTime2->year, pTime2->month, pTime2->day))
	{
		U32 d1, d2, s1, s2;
	
		d1 = GetTotDays(pTime1->year, pTime1->month, pTime1->day);
		d2 = GetTotDays(pTime2->year, pTime2->month, pTime2->day);	
		s1 = (pTime1->hour*60+pTime1->minute)*60+pTime1->second;
		s2 = (pTime2->hour*60+pTime2->minute)*60+pTime2->second;
	
		if(d1==d2)	
			return (s1>s2)?(s1-s2):(s2-s1);		
		
		if(d1>d2)
			return (d1-d2)*TotSecPerDay-s2+s1; 	
		else
			return (d2-d1)*TotSecPerDay-s1+s2;
	}
	return 0xffffffff;
}

/*
功能:計算某一天在在當年總天數(shù)中的位置;
輸入:年,月,日;
返回:某一天在在當年總天數(shù)中的位置;
說明:日期為陽歷;  
*/
U16 RtcGetPastDays(U16 year, U16 month, U16 day)
{
	if(RtcCheckDateValid(year, month, day))
	{
		U16 i, d=day;	
		
		for(i=1; i<month; i++)
			d += monthday[i-1];					
		if(RtcIsLeapYear(year)&&(month>2))
			d++;
		return d;			
	}
	return 0xffff;	
}

/*
功能:計算某個日期加多少天后的新日期;
輸入:存放日期結(jié)構(gòu)的指針,加的天數(shù);
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷;  
*/
U8 RtcDateAddDays(DATE_T *date, U16 days)
{
	if(RtcCheckDateValid(date->year, date->month, date->day))
	{
		U32 d;	
	
		d  = GetTotDays(date->year, date->month, date->day);			
		TotDaysToDate(d+days, date);			
		return TRUE;
	}
	return FALSE;	
}

/*
功能:計算某個日期減多少天后的新日期;
輸入:存放日期結(jié)構(gòu)的指針,減的天數(shù);
返回:TRUE or FALSE;
說明:日期為陽歷;  
*/
U8 RtcDateSubDays(DATE_T *date, U16 days)
{
	if(RtcCheckDateValid(date->year, date->month, date->day))
	{
		U32 d;	
	
		d  = GetTotDays(date->year, date->month, date->day);
		if(d<=days)
			return FALSE;	
		TotDaysToDate(d-days, date);
		return TRUE;
	}
	return FALSE;
}

/*
功能:計算下個月的日期;
輸入:存放輸入輸出日期結(jié)構(gòu)的地址;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷;  
*/
U8 RtcGetNextMonth(DATE_T *date)
{
	return RtcDateAddDays(date, 30);
}

/*
功能:計算上個月的日期;
輸入:存放輸入輸出日期結(jié)構(gòu)的地址;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷;  
*/
U8 RtcGetPreMonth(DATE_T *date)
{
	return RtcDateSubDays(date, 30);
}

/*
功能:計算下一年的日期;
輸入:存放輸入輸出日期結(jié)構(gòu)的地址;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷 
*/
U8 RtcGetNextYear(DATE_T *date)
{
	return RtcDateAddDays(date, TotDaysPerYear);
}

/*
功能:計算上一年的日期;
輸入:存放輸入輸出日期結(jié)構(gòu)的地址;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為陽歷;
*/
U8 RtcGetPreYear(DATE_T *date)
{
	return RtcDateSubDays(date, TotDaysPerYear);	
}

/***********************************************************/
/*
功能:計算某一年的農(nóng)歷生肖;
輸入:date--存放輸入日期結(jié)構(gòu)的地址;
	  solar--1==輸入日期是陽歷,0==輸入日期是農(nóng)歷
返回:0~11
說明:0表示猴年;
*/
U8  RtcGetAnimalYear(DATE_T *date, U8 solar)
{
	return 0;
}

/*
功能:陽歷轉(zhuǎn)農(nóng)歷;
輸入:src_date--存放輸入輸出日期結(jié)構(gòu)的指針;
返回:0 --輸出的農(nóng)歷是非潤月,1--輸出的農(nóng)歷是潤月
說明:沒有;  
*/
U8 RtcSolarConvertLunar(DATE_T *src_date)
{
	return 0;
} 

/*
功能:計算農(nóng)歷某個月有多少天;
輸入:年,月;
返回:TRUE --日期正確,FALSE--日期錯誤;
說明:日期為農(nóng)歷;  
*/
U8 RtcLunarDayOfMonth(U16 year, U16 month)
{
	return 0;
}

/*
功能:農(nóng)歷轉(zhuǎn)陽歷;
輸入:src_date--存放輸入輸出日期結(jié)構(gòu)的指針,dec_date---如果輸出的陽歷有兩個,這是存放第二個陽歷的地址;
返回:0 --非潤月,只輸出一個陽歷,1--潤月,輸出兩個陽歷,0xff--日期錯誤;
說明:如果農(nóng)歷月為潤月,對應(yīng)的陽歷有兩個日期;
*/
U8 RtcLunarConvertSolar(DATE_T *src_date, DATE_T *dec_date)
{
	return 0;
} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品乱人伦一区二区三区| 亚洲免费资源在线播放| 国产欧美一区二区在线观看| 亚洲乱码中文字幕| 精品一区精品二区高清| 色欧美乱欧美15图片| 精品国内片67194| 午夜国产不卡在线观看视频| 99在线精品一区二区三区| 欧美一级日韩免费不卡| 一区二区三区.www| www.欧美亚洲| 国产日韩欧美高清在线| 精品一区二区三区免费播放| 欧美这里有精品| 国产精品久久久爽爽爽麻豆色哟哟| 免费观看成人av| 欧美日韩国产综合一区二区| 国产精品无圣光一区二区| 精品一区精品二区高清| 777奇米四色成人影色区| 亚洲自拍欧美精品| av一本久道久久综合久久鬼色| 久久婷婷国产综合国色天香 | 欧美日韩成人在线| 国产精品色在线| 国产成人综合自拍| 精品国产91洋老外米糕| 韩国成人在线视频| 欧美电影免费观看完整版 | 亚洲美女在线国产| 成人高清在线视频| 日本一区二区三区dvd视频在线 | 日韩精品中文字幕在线不卡尤物 | 欧美婷婷六月丁香综合色| 国产精品美女久久福利网站| 成人污视频在线观看| 国产精品三级av在线播放| 大尺度一区二区| 国产精品国产三级国产a| 91在线视频播放| 亚洲综合视频在线观看| 在线日韩av片| 日本美女视频一区二区| 欧美va天堂va视频va在线| 国产做a爰片久久毛片| 久久精品亚洲一区二区三区浴池| 黄色精品一二区| 欧美极品美女视频| 91免费小视频| 午夜成人在线视频| 日韩精品中文字幕一区| 国产麻豆精品视频| 欧美日韩国产经典色站一区二区三区 | 在线视频观看一区| 国产精品视频线看| 在线亚洲精品福利网址导航| 国产在线播放一区三区四| 香蕉久久夜色精品国产使用方法 | 一区二区三区在线观看动漫| 久久久久免费观看| 欧美一区二区三区的| 91福利在线导航| 99久久精品国产网站| 国产成人精品一区二区三区四区| 日本va欧美va瓶| 爽爽淫人综合网网站| 亚洲一区二区三区在线播放| 亚洲欧洲三级电影| 国产精品午夜电影| 欧美激情一区不卡| 国产女同性恋一区二区| 国产欧美一区二区在线观看| 26uuu另类欧美| 亚洲精品一区二区三区影院 | 日本电影欧美片| 北岛玲一区二区三区四区| 国产精品亚洲一区二区三区妖精| 久久精品国产亚洲a| 日韩 欧美一区二区三区| 日韩电影免费在线看| 五月婷婷色综合| 婷婷夜色潮精品综合在线| 香蕉av福利精品导航 | 美女脱光内衣内裤视频久久网站 | 91精品国产色综合久久不卡蜜臀 | 麻豆视频一区二区| 美女网站视频久久| 国产米奇在线777精品观看| 极品美女销魂一区二区三区 | 成人国产精品免费网站| bt欧美亚洲午夜电影天堂| 99精品久久免费看蜜臀剧情介绍| 成人av在线一区二区三区| 99精品在线观看视频| 在线视频综合导航| 欧美乱熟臀69xxxxxx| 日韩一卡二卡三卡四卡| 久久免费偷拍视频| 最近中文字幕一区二区三区| 亚洲精品成人精品456| 亚洲国产日日夜夜| 九九精品视频在线看| 成人高清在线视频| 欧美性大战久久| 欧美xxxx老人做受| 国产精品日韩成人| 亚洲一区二区精品久久av| 蜜桃视频第一区免费观看| 国产激情视频一区二区三区欧美| 不卡一区二区中文字幕| 欧美色区777第一页| 精品剧情v国产在线观看在线| 国产嫩草影院久久久久| 亚洲成人一区在线| 国产乱码一区二区三区| 91在线看国产| 日韩欧美激情四射| 中文字幕字幕中文在线中不卡视频| 五月激情六月综合| 不卡一区二区中文字幕| 91精品国产综合久久小美女 | 国产精品剧情在线亚洲| 亚洲成a人片在线不卡一二三区| 久久99久久99精品免视看婷婷| caoporn国产精品| 在线播放一区二区三区| 国产精品久久久久久妇女6080 | 91福利区一区二区三区| 精品欧美久久久| 亚洲午夜在线观看视频在线| 国产一区日韩二区欧美三区| 在线欧美日韩精品| 欧美国产精品一区二区| 蜜臀99久久精品久久久久久软件| 99r国产精品| 久久精品人人爽人人爽| 午夜精品免费在线| 波多野结衣视频一区| 精品美女在线播放| 五月天激情综合| 91精品福利视频| 国产精品看片你懂得| 韩国在线一区二区| 91精品国产综合久久精品图片| 亚洲欧洲99久久| 国产成人在线观看免费网站| 91麻豆精品国产91| 亚洲综合在线观看视频| 成人18视频在线播放| 久久精品一二三| 黄色日韩三级电影| 精品国产亚洲一区二区三区在线观看| 一区二区高清免费观看影视大全| 不卡的av电影| 中文字幕亚洲精品在线观看| 国产传媒欧美日韩成人| 久久久久一区二区三区四区| 国内一区二区在线| 日韩免费观看高清完整版| 视频一区免费在线观看| 欧美视频在线不卡| 一片黄亚洲嫩模| 91福利视频网站| 亚洲综合丁香婷婷六月香| 欧美这里有精品| 一区二区免费在线播放| 欧美三级三级三级| 亚洲高清免费一级二级三级| 欧美网站大全在线观看| 亚洲电影视频在线| 欧美日韩国产综合视频在线观看| 亚洲成人一区二区| 91麻豆精品国产无毒不卡在线观看| 偷偷要91色婷婷| 欧美大片在线观看一区二区| 毛片一区二区三区| 久久久美女艺术照精彩视频福利播放| 国产一区欧美日韩| 国产精品成人网| 色综合久久88色综合天天6| 一区二区三区四区乱视频| 欧美日韩五月天| 日本欧美加勒比视频| 久久一区二区三区四区| 成人av先锋影音| 一区二区三区久久| 制服丝袜在线91| 国产美女视频91| 综合久久国产九一剧情麻豆| 在线欧美一区二区| 久久精品久久精品| 欧美韩国日本不卡| 91国偷自产一区二区三区成为亚洲经典| 一区二区三区在线观看网站| 日韩欧美激情在线| www.欧美精品一二区| 亚洲成人动漫在线免费观看| 精品久久久久久久人人人人传媒| 大白屁股一区二区视频|