Beispiel #1
0
void rtc_update( TiRtc * rtc)
{
	//refer to the application note of atmega128
	if (++rtc->current_time.second==60)
	{
		rtc->current_time.second=0;
		if (++rtc->current_time.minute==60)
		{
			rtc->current_time.minute=0;
			if (++rtc->current_time.hour==24)
			{
				rtc->current_time.hour=0;
				if (++rtc->current_time.date==32)
				{
					rtc->current_time.month++;
					rtc->current_time.date=1;
				}
				else if (rtc->current_time.date==31)
				{
					if ((rtc->current_time.month==4) || (rtc->current_time.month==6) || (rtc->current_time.month==9) ||(rtc->current_time.month==11))
					{
						rtc->current_time.month++;
						rtc->current_time.date=1;
					}
				}
				else if (rtc->current_time.date==30)
				{
					if(rtc->current_time.month==2)
					{
						rtc->current_time.month++;
						rtc->current_time.date=1;
					}
				}
				else if (rtc->current_time.date==29)
				{
					if((rtc->current_time.month==2) && (not_leap(rtc)))
					{
						rtc->current_time.month++;
						rtc->current_time.date=1;
					}
				}
				if (rtc->current_time.month==13)
				{
					rtc->current_time.month=1;
					rtc->current_time.year++;
				}
			}
		}
	}
}
Beispiel #2
0
void RTC_step(void) //called every second
{ 
    if (++t.second==60)        //keep track of time, date, month, and year
    {
        t.second=0;
        if (++t.minute==60) 
        {
            t.minute=0;
            if (++t.hour==24)
            {
                t.hour=0;
                if (++t.date==32)
                {
                    t.month++;
                    t.date=1;
                }
                else if (t.date==31) 
                {                    
                    if ((t.month==4) || (t.month==6) || (t.month==9) || (t.month==11)) 
                    {
                        t.month++;
                        t.date=1;
                    }
                }
                else if (t.date==30)
                {
                    if(t.month==2)
                    {
                       t.month++;
                       t.date=1;
                    }
                }              
                else if (t.date==29) 
                {
                    if((t.month==2) && (not_leap()))
                    {
                        t.month++;
                        t.date=1;
                    }                
                }                          
                if (t.month==13)
                {
                    t.month=1;
                    t.year++;
                }
            }
        }
    }  
}  
Beispiel #3
0
//-----------------------------------------------------
void ServiceSetDateHappy(void){
 unsigned char time_out;
 ReadDsRtcTime(); // for month ans date happy
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_DATE_FILE);
 while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_SELECT_DATE);
  time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
  if(time_out == false){ SystemReload(); }
  PlayBeep();
  if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
  if(KEY == PREV){ // set month
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MONTH);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD();break; }
    if(KEY == PREV){ // month++
     CLEAR_KEYPAD();
     if(++AlarmHappy.month == 13){
      AlarmHappy.month = 1;
     }
    }
    if(KEY == NEXT){ // month--
     CLEAR_KEYPAD();
     if(--AlarmHappy.month == 0){
      AlarmHappy.month = 12;
     }
    }
    // PLAY CURRENT MONTH
    PlayServiceFile(PLAY_MONTH,(AlarmHappy.month-1));
   }
  }
  if(KEY == NEXT){ // set date
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_DAY);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ SystemReload(); }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // date++
     CLEAR_KEYPAD();
     if(++AlarmHappy.date == 29){
      if((AlarmHappy.month == 2) && (not_leap())){
       AlarmHappy.date = 1;
      }
     }
     if(AlarmHappy.date == 31){
      if((AlarmHappy.month==4)||(AlarmHappy.month==6)||(AlarmHappy.month==9)||(AlarmHappy.month==11)){
       AlarmHappy.date = 1;
      }
     }
     if(AlarmHappy.date == 32){
      AlarmHappy.date = 1;
     }
    }
    if(KEY == NEXT){ // date--
     CLEAR_KEYPAD();
     if(--AlarmHappy.date==0){
      if((AlarmHappy.month==4)||(AlarmHappy.month==6)||(AlarmHappy.month==9)||(AlarmHappy.month==11)){
       AlarmHappy.date=30;
      }else{
        AlarmHappy.date=31;
       }
      if(AlarmHappy.month == 2){
       AlarmHappy.date=29;
      }
      if((AlarmHappy.month == 2) && (not_leap())){
       AlarmHappy.date=28;
      }
     }
    }
    // PLAY CURRENT DATE
    PlayServiceFile(PLAY_DATE,(AlarmHappy.date-1));
   }
  }
 }
 return;
}
Beispiel #4
0
//-----------------------------------------------------
void ServiceSetDateRTC(void){
 unsigned char time_out;
 PlayServiceFile(PLAY_SERVICE,SERVICE_SET_DATE_FILE);
  while(1){
  PlayServiceFile(PLAY_SERVICE,SERVICE_DATE_YEAR_CHANGE);
  time_out = WaitKey(PREV,NEXT,PLAY,EXIT);
  if(time_out == false){ break; }
  PlayBeep();
  if(KEY == EXIT){ CLEAR_KEYPAD(); break; }

  if(KEY == PREV){ // set month
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_MONTH);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // month++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Month == 13) DS_CALENDAR.Month = 1;
    }
    if(KEY == NEXT){ // month--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Month == 0) DS_CALENDAR.Month = 12;
    }
    // PLAY CURRENT MONTH
    PlayServiceFile(PLAY_MONTH,(DS_CALENDAR.Month-1));
   }
  }
  if(KEY == NEXT){ // set date
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_DAY);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){CLEAR_KEYPAD();break;}
    if(KEY == PREV){ // date++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Date == 29){ if((DS_CALENDAR.Date == 2) && (not_leap())){ DS_CALENDAR.Date = 1; } }
     if(  DS_CALENDAR.Date == 31){ if((DS_CALENDAR.Date==4)||(DS_CALENDAR.Date==6)||(DS_CALENDAR.Date==9)||(DS_CALENDAR.Date==11)){ DS_CALENDAR.Date = 1; } }
     if(  DS_CALENDAR.Date == 32){ DS_CALENDAR.Date = 1; }
    }
    if(KEY == NEXT){ // date--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Date==0){
      if((DS_CALENDAR.Date==4)||(DS_CALENDAR.Date==6)||(DS_CALENDAR.Date==9)||(DS_CALENDAR.Date==11)){
       DS_CALENDAR.Date=30;
      }else{
        DS_CALENDAR.Date=31;
       }
      if(DS_CALENDAR.Date == 2){ DS_CALENDAR.Date=29; }
      if((DS_CALENDAR.Date == 2) && (not_leap())){
       DS_CALENDAR.Date=28;
      }
     }
    }
    // PLAY CURRENT DATE
    PlayServiceFile(PLAY_DATE,(DS_CALENDAR.Date-1));
   }
  }
  if(KEY == PLAY){ // set year
   CLEAR_KEYPAD();
   PlayServiceFile(PLAY_SERVICE,SERVICE_CHANGE_YEAR);
   while(1){
    time_out = WaitKey(PREV,NEXT,-1,EXIT);
    if(time_out == false){ break; }
    PlayBeep();
    if(KEY == EXIT){ CLEAR_KEYPAD(); break; }
    if(KEY == PREV){ // year++
     CLEAR_KEYPAD();
     if(++DS_CALENDAR.Year > 20){
      DS_CALENDAR.Year = 0x09;
     }
    }
    if(KEY == NEXT){ // year--
     CLEAR_KEYPAD();
     if(--DS_CALENDAR.Year < 9){
      DS_CALENDAR.Year = 0x20;
     }
    }
    // PLAY CURRENT DATY
    PlayServiceFile(PLAY_YEAR,(DS_CALENDAR.Year-9));
   }
  }
 }
 return;
}