//Funkcja s³u¿y do obs³ugi zmian wybranego elementu w trybie edycji czasu i daty
void changeDateTimeValue(int8_t value)
{
	if(dateTime == 0)
	{
		changeHours(registers.hoursRegister.tensPlace * 10 + registers.hoursRegister.unitPlace, value);
	}
	else if(dateTime == 1)
	{
		changeMinutes(registers.minutesRegister.tensPlace * 10 + registers.minutesRegister.unitPlace, value);
	}
	else if(dateTime == 2)
	{
		changeWeekdays(registers.dateBRegister.weekdays, value);
	}
	else if(dateTime == 3)
	{
		changeDays(registers.dateARegister.dayTensPlace * 10 + registers.dateARegister.dayUnitPlace, value);
	}
	else if(dateTime == 4)
	{
		changeMonths(registers.dateBRegister.monthTensPlace * 10 + registers.dateBRegister.monthUnitPlace , value);
	}
	else if(dateTime == 5)
	{
		changeYears(registers.year.year , value);
	}
}
Exemple #2
0
int main()
{
	unsigned int nextState;
	unsigned int actualStateButton = 0;

	//Define a a data e hora que o sistema vai ter inicialmente
	//RTC_SetTime(00,00,00);
	ti.tm_hour = 00;
	ti.tm_min = 00;
	ti.tm_sec = 00;
	
	//RTC_SetDate(8,11,2013);
	ti.tm_mday = 8;
	ti.tm_mon = 11;
	ti.tm_year = 2013;
	
	//RTC_SetDays(5 ,365);
	ti.tm_wday = 5;
	ti.tm_yday = 365;
	
	//System init
	SYSCLK_Init(1000); /* Acertar o clock do TIMER*/
	RTC_Init(&ti); /* Iniciar o RTC com a data e hora definida inifialmente*/
	LCD_Init();
	LCD_Clear();
	I2C_Init();
	
	RADIO_Init();
	RADIO_SetFreq(89.9);
	WriteData();
	
	while(1)
	{

		actualStateButton = Button_Read();
		nextState = decodeButtons(actualStateButton);
		
		switch(nextState)
		{
			case CHANGE_HOURS:
				changeHours(&ti);
				break;
				
			case CHANGE_RADIO:
				changeRadio(&tea);
				LCD_Clear();
				break;
				
			//Tambem devia de escrever a freq do radio
			case SHOW:
				RTC_GetValue(&ti);
				LCD_Goto(4,0);
				strftime(buffer,16,"%T",&ti);
				LCD_WriteString(buffer);

				ReadData(&tea);
				float fm = RADIO_GetFreq(&tea);
				int level = RADIO_Station_Level(&tea);
				int parteDecimal = (int)(fm*10)%10;
				sprintf(buffer, "%d.%dMHz L:%d",(int)fm,parteDecimal, level);
				LCD_Goto(0,1);
				LCD_WriteString(buffer);
				break;
				
			default:
				break;
		}
	}
	return 0;
}