Witam.Mam problem z funkcjami w dwu kanałowym zegarze sterującym gdzie muszę porównywać czas bieżący z ustawionym czasem włączenia i czasem wyłączenia niezależnie jednego i drugiego kanału. Napisałem coś takiego opierając się na warunkach if ale nie chodziło to prawidłowo bo raz zadziałało a raz nie a i kodu było sporo. Mam z tym duży kłopot bo to ostatni człon mojego programu a ja nie potrafię wymyślić sensownej definicji którą mógłbym zastosować dlatego proszę o pomoc może ktoś z większym doświadczeniem podpowie jak coś takiego zdefiniować.To cześć kodu odczytującego z PCF8583 czas bieżący i zapisane w nim czasy nastaw.
{
PCF8583=TWI_read(zegar,0x06);
pcf_mc[1] = PCF8583 >> 4; //dziesiatki miesięc
pcf_mc[0] = PCF8583 & 0x0F; //jednostki miesięcy
PCF8583=TWI_read(zegar,0x05);
pcf_dni[1] = PCF8583 >> 4; //dziesiatki dni
pcf_dni[0] = PCF8583 & 0x0F; //jednostki dni
PCF8583=TWI_read(zegar,0x04);
; pcf_godz[1] = PCF8583 >> 4; //dziesiatki godzin
pcf_godz[0] = PCF8583 & 0x0F; //jednostki godzin
PCF8583=TWI_read(zegar,0x03);
pcf_min[1] = PCF8583 >> 4; //dziesiatki
pcf_min[0] = PCF8583 & 0x0F; //jednostki minut
PCF8583=TWI_read(zegar,0x02);
pcf_sec[1] = PCF8583 >> 4; //dziesiatki
pcf_sec[0] = PCF8583 & 0x0F; //jednostki sekund
//--------------------------------------------------------------odczyt nastaw timerów
PCF8583=TWI_read(zegar,0x08); //czas włącz kanał 1
godz_timer[0] = PCF8583;
PCF8583=TWI_read(zegar,0x09);
min_timer[0] = PCF8583;
PCF8583=TWI_read(zegar,0x0a); //czas wyłącz kanał 1
godz_timer[1] = PCF8583;
PCF8583=TWI_read(zegar,0x0B);
min_timer[1] = PCF8583;
PCF8583=TWI_read(zegar,0x0C); //czas włącz kanał 2
godz_timer[2] = PCF8583;
PCF8583=TWI_read(zegar,0x0D);
min_timer[3] = PCF8583;
PCF8583=TWI_read(zegar,0x0E); //czas wyłącz kanał 2
godz_timer[4] = PCF8583;
PCF8583=TWI_read(zegar,0x0F);
min_timer[4] = PCF8583;
IRQ==0;
m=((pcf_mc[1]*10)+(pcf_mc[0]));
d=((pcf_dni[1]*10)+(pcf_dni[0]));
y=2010;
pcf_dzien=(d+=m<3?y--:y-2,23*m/9+d+4+y/4-y/100+y/400)%7;//numer dnia tygodnia