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

📄 timefun.c

📁 该程序用msp430单片机开发了一款单相电子式多费率电能表
💻 C
字号:

//**********************************************************************
// Clock Start
//**********************************************************************
void ClkStart( void )
{
// 设置中断频率为 0.5s, 液晶时钟原32分频 */
  BTCTL = BT_fLCD_DIV32 | BT_fCLK2_DIV64 | BT_fCLK2_ACLK_DIV256;
// 1s 中断使能 */  
	IE2 |= BTIE;
}

//**********************************************************************
// Clock Initialize
//**********************************************************************
void ClkInit( void )
{
    Second = 0x00;
    Minute = 0x00;
    Hour = 0x00;
    Day = 0x01;
    Month = 0x01;
    Year[0] =0x07;
    Year[1]=0x20;
    Week = 0x01;
    ChkClk=ChkSum((unsigned char*)&Second, 8);
}
unsigned int BCD_HEX(unsigned int Data)
{
   return(((Data>>12)&0x0f)*1000+((Data>>8)&0x0f)*100+((Data>>4)&0x0f)*10+(Data&0x0f));
}
unsigned int BCD_Y(unsigned char *dat)
{
   unsigned int ss;
   ss = *(dat+1) * 0x100 + *dat;
   return(BCD_HEX(ss));
}

void Clk_Sys( void )
{
	unsigned int i;
	BCD1INC( &Second );
	if (Second > 0x59) 
	{
		Second = 0x00;
		BCD1INC( &Minute );
		if (Minute > 0x59)
		{
			Minute = 0x00;
			BCD1INC( &Hour );
			if (Hour > 0x23) 
	        	{
				Hour = 0x00;
				BCD1INC( &Day );
				Week++;
				if( Week >= 0x07) Week = 0x00;		// 0100 0000
				switch(Month)
				{
					case 0x01:
					case 0x03:
					case 0x05:
					case 0x07:
					case 0x08:
					case 0x10:
					case 0x12: if(Day > 0x31)
								{	Day = 0x01;
									BCD1INC( &Month );
								}break;
					case 0x04:
					case 0x06:
                                        case 0x09:
					case 0x11: if(Day > 0x30)
								{  Day = 0x01;
								   BCD1INC( &Month );
								}break;
					case 0x02: 	{ 	i = BCD_Y(&Year[0]);
									if ( (( i%100 )&&(( i%4) == 0 )) || (( i%400 ) == 0 ) ) i = 0x29;
									else i = 0x28;
									if ( Day > i )
									{
										Day = 0x01;
										BCD1INC( &Month );
									}
								}break;
				}
				if(Month > 0x12)
				{
					Month = 0x01;
					BCD2INC(&Year[0]);
				}
			}
		}
	}
	ChkClk=ChkSum((unsigned char*)&Second, 8);
}

⌨️ 快捷键说明

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