rtc.c

来自「里面给出了ATmega103单片机编程的C语言实例程序」· C语言 代码 · 共 81 行

C
81
字号
/* ATmega103 rtc.c file

   Author : Robert Stuart
   Company : PDL Industries Ltd
   day of Creation : 15 July 1999
   Tested : 15 July 1999

   Function :
*/

/* include */
#include "rtc.h"

void RTCInitialise( void )
{
  TIMSK &= ~(BIT(TOIE0) | BIT(OCIE0));
  ASSR |= 8;
  TCNT0 = 0;
  TCCR0 = BIT(CS02) | BIT(CS00);
  
  while ( ASSR & 0x07 );

  TIMSK |= BIT(TOIE0);

  Time.Second = 0;
  Time.Minute = 46;
  Time.Hour = 9;
  Time.Day = 26;
  Time.Month = 4;
  Time.Year = 2000;
}

void RTCInterrupt( void )
{
  if ( ++Time.Second == 60 )		/* keep track of time, day, month, and year */
  {
    Time.Second = 0;
    if ( ++Time.Minute == 60 )
    {
      Time.Minute = 0;
      if ( ++Time.Hour == 24 )
      {
        Time.Hour = 0;
        if ( ++Time.Day == 32 )
        {
	Time.Month++;
	Time.Day = 1;
        }
        else if ( Time.Day == 31 )
        {
	if ( Time.Month == 4 || Time.Month == 6 || Time.Month == 9 || Time.Month == 11 )
	{
	  Time.Month++;
	  Time.Day = 1;
	}
        }
        else if ( Time.Day == 30 )
        {
	if ( Time.Month == 2 )
	{
	  Time.Month++;
	  Time.Day = 1;
	}
        }
        else if ( Time.Day == 29 )
        {
	if ( Time.Month == 2 && Time.Year % 400 )
	{
	  Time.Month++;
	  Time.Day = 1;
	}
        }
        if ( Time.Month == 13 )
        {
	Time.Month = 1;
	Time.Year++;
        }
      }
    }
  }
}

⌨️ 快捷键说明

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