//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); } }
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; }