⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 基于DOS SVGA图形界面的JJY/WWVB/DCF/MSF广播时间码发生器
💻 C
字号:
//
//*******************************************************************
//*            	          Init Time Buffers			  				*
//*******************************************************************
//
void InitTime(void)
{
	int i;

	gettime(&t);
	getdate(&d);

	itoa(t.ti_sec, Sec, 10);
	if(t.ti_sec<10){
		Sec[1]=Sec[0];
		Sec[0]='0';
		}
	itoa(t.ti_min, Min, 10);
	if(t.ti_min<10){
		Min[1]=Min[0];
		Min[0]='0';
		}
	itoa(t.ti_hour, Hour, 10);
	if(t.ti_hour<10){
		Hour[1]=Hour[0];
		Hour[0]='0';
		}
	itoa(d.da_day, Day, 10);
	if(d.da_day<10){
		Day[1]=Day[0];
		Day[0]='0';
		}
	itoa(d.da_mon, Mon, 10);
	if(d.da_mon<10){
		Mon[1]=Mon[0];
		Mon[0]='0';
		}

	if(d.da_year>1999){
		CENT=1;
		i=(d.da_year-2000);
		}
	else {
		CENT=0;
		i=d.da_year-1900;
		}
	itoa(i, Year, 10);
	if(i<10){
		Year[1]=Year[0];
		Year[0]='0';
		}
	}
//
//*******************************************************************
//*                       UP/DOWN fuctions		  					*
//*******************************************************************
//
unsigned int UP_sec(void)
{
	unsigned int carry=0;

	Sec[1]++;
	if(Sec[1]>'9'){
		Sec[1]='0';
		Sec[0]++;
		if(Sec[0]>'5'){
			Sec[0]='0';
			carry=1;
			}
		}
	return carry;
	}

void DN_sec(void)
{
	if((Sec[0]=='0')&&(Sec[1]=='0')){
		Sec[0]='5';
		Sec[1]='9';
		}
	else {
		Sec[1]--;
		if(Sec[1]<'0'){
			Sec[1]='9';
			Sec[0]--;
			}
		}
	}

unsigned int UP_min(void)
{
	unsigned int carry=0;

	Min[1]++;
	if(Min[1]>'9'){
		Min[1]='0';
		Min[0]++;
		if(Min[0]>'5'){
			Min[0]='0';
			carry=1;
			}
		}
	return carry;
	}

void DN_min(void)
{
	if((Min[0]=='0')&&(Min[1]=='0')){
		Min[0]='5';
		Min[1]='9';
		}
	else {
		Min[1]--;
		if(Min[1]<'0'){
			Min[1]='9';
			Min[0]--;
			}
		}
	}

unsigned int UP_hour(void)
{
	unsigned int carry=0;

	Hour[1]++;
	if(Hour[1]>'9'){
		Hour[1]='0';
		Hour[0]++;
		}
	if((Hour[0]=='2')&&(Hour[1]=='4')){
		Hour[0]='0';
		Hour[1]='0';
		carry=1;
		}
	return carry;
	}

void DN_hour(void)
{
	if((Hour[0]=='0')&&(Hour[1]=='0')){
		Hour[0]='2';
		Hour[1]='3';
		}
	else {
		Hour[1]--;
		if(Hour[1]<'0'){
			Hour[1]='9';
			Hour[0]--;
			}
		}
	}

unsigned int UP_day(void)
{
	unsigned int carry=0;
	unsigned char mmd, day[2];

	mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
	itoa(mmd, day, 10);
	if(mmd<10){
		day[1]=day[0];
		day[0]='0';
		}
	if( (Day[0]==day[0])&&(Day[1]==day[1]) ){
		Day[0]='0';
		Day[1]='1';
		carry=1;
		}
	else{
		Day[1]++;
		if(Day[1]>'9'){
			Day[1]='0';
			Day[0]++;
			}
		}
	return carry;
	}

void DN_day(void)
{
	unsigned char mmd, day[2];

	mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
	itoa(mmd, day, 10);
	if(mmd<10){
		day[1]=day[0];
		day[0]='0';
		}

	if((Day[0]=='0')&&(Day[1]=='1')){
		Day[0]=day[0];
		Day[1]=day[1];
		}
	else {
		Day[1]--;
		if(Day[1]<'0'){
			Day[1]='9';
			Day[0]--;
			}
		}
	}

unsigned int UP_mon(void)
{
	unsigned int carry=0;

	Mon[1]++;
	if(Mon[1]>'9'){
		Mon[1]='0';
		Mon[0]++;
		}
	if((Mon[0]=='1')&&(Mon[1]=='3')){
		Mon[0]='0';
		Mon[1]='1';
		carry=1;
		}
	return carry;
	}

void DN_mon(void)
{
	if((Mon[0]=='0')&&(Mon[1]=='1')){
		Mon[0]='1';
		Mon[1]='2';
		}
	else {
		Mon[1]--;
		if(Mon[1]<'0'){
			Mon[1]='9';
			Mon[0]--;
			}
		}
	}

void UP_year(void)
{
	Year[1]++;
	if(Year[1]>'9'){
		Year[1]='0';
		Year[0]++;
		if(Year[0]>'9'){
			Year[0]='0';
			if(CENT==0){
				CENT=1;
				Year[1]='0';
				}
			else {
				CENT=0;
				Year[1]='1';
				}
			}
		}
	}

void DN_year(void)
{
	if((Year[0]=='0')&&(Year[1]=='0')){
		Year[0]='9';
		Year[1]='9';
		CENT=0;
		}
	else {
		Year[1]--;
		if(Year[1]<'0'){
			Year[1]='9';
			Year[0]--;
			}
		}
	if((Year[0]=='0')&&(Year[1]=='0')){
		if(CENT==0){
			Year[0]='9';
			Year[1]='9';
			CENT=1;
			}
		}
	}

//
//*******************************************************************
//*                       Day's calcurations		 				*
//*******************************************************************
//
unsigned char GetMaxDay(unsigned char month)
{
	unsigned int year;

	year=((Year[0]-0x30)*10)+Year[1]-0x30;
	switch(month)
	{
		case 2:
			{
			if(year%4)return 28;
				else return 29;
			}
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			return 31;
		default:
			return 30;
		}
	}

void CheckDay(void)
{
	unsigned char mmd, day[2];

	mmd=GetMaxDay( (Mon[0]-0x30)*10+(Mon[1]-0x30) );
	itoa(mmd, day, 10);
	if(mmd<10){
		day[1]=day[0];
		day[0]='0';
		}

	if( ((Day[0]-0x30)*10+Day[1]-0x30)
				> ((day[0]-0x30)*10+day[1]-0x30) ){
		Day[0]=day[0];
		Day[1]=day[1];
		}
	}

void CalcWeek(void)
{
	unsigned int year, month, day, feb, dys;

	day=((Day[0]-0x30)*10)+Day[1]-0x30;
	month=((Mon[0]-0x30)*10)+Mon[1]-0x30;
	year=((Year[0]-0x30)*10)+Year[1]-0x30;

	LPY=0;
	if(year%4)feb=28;
		else {
			LPY=1;
			feb=29;
			}
	DST=0;
	if((4<month)&&(month<9))DST=1;

	switch(month){
		case 1:  dys = day; break;
		case 2:  dys = 31+day; break;
		case 3:  dys = feb+31+day; break;
		case 4:  dys = feb+62+day; break;
		case 5:  dys = feb+92+day; break;
		case 6:  dys = feb+123+day; break;
		case 7:  dys = feb+153+day; break;
		case 8:  dys = feb+184+day; break;
		case 9:  dys = feb+215+day; break;
		case 10: dys = feb+245+day; break;
		case 11: dys = feb+276+day; break;
		case 12: dys = feb+306+day; break;
		}

	itoa(dys, Days, 10);
	if(dys<100){
		Days[2]=Days[1];
		Days[1]=Days[0];
		Days[0]='0';
		if(dys<10){
			Days[2]=Days[1];
			Days[1]='0';
			}
		}

	if(CENT==1)Week=(1+dys+(year+99)+((year+99)/4))%7;
		else Week=(1+dys+(year-1)+((year-1)/4))%7;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -