Ok spróbuje.Co nieco zmodyfikowałem ale utknąłem na porównaniu czasu....
część programu;
Zaloguj się, aby zobaczyć kod
[/syntax]//===========================================================
// ODCZYT ZEGARA CZASU RZECZYWISTEGO RTC
//===========================================================
int a,tr;
for(a=0;a<5;a++)
{
read_pcf[a] = TWI_read(pcf8583,rtc_adres[a]);
}
time[1] = bcd_na_dec(read_pcf[0]); //sekundy
time[2] = bcd_na_dec(read_pcf[1]); //minuty
time[3] = bcd_na_dec(read_pcf[2]); //godziny
time[4] = bcd_na_dec(read_pcf[3]); //dni
time[5] = buffer_t[4]; //miesiące
time[6] = bcd_na_dec(read_pcf[4] & 0x1F); // ????
//wyliczanie dnia tygodnia przy stałej wartości roku
//nie wiem jak zrobić to inaczej by z automatu wyliczal rok
int y=2014,m,d;
m=time[6]; d=time[4];
week=(d+=m<3?y--:y-2,23*m/9+(d+1)+4+y/4-y/100+y/400)%7;
time_dec[0]=(time_dec[3]*60)+time_dec[2]; //1439 = godz 23:59
// wartość czasu zegara systemowego jest liczba czterocyfrowa aby było
// łatwiej wykonać porównanie czasu lokalnego z nastawą zegara sterujacego
time[7]=((time[3]*60)+time[2]);
//===========================================================
//funkcje odczytu timera sterującego
//===========================================================
for(tr=0; tr<16; tr++)
{
//odczyt nastawy godzin dla 1 z n kanalow
time[8]=TWI_read(pcf8583,mem_addr[tr]);
//odczyt nastawy minut dla 1 z n kanalow
time[9]=TWI_read(pcf8583,mem_addr[tr+1]);
//sumowanie wartości godzin i minut
time[10]=time[8]*60+time[9];
if(time[7]==time[10])
}
//===========================================================
//funkcje porównanie czasu systemowego z nastawą czasu timera
//===========================================================
//week - dzień tygodnia
if((week==0)||(week==1)||(week==2)||(week==3)||(week==4))
{
//jak zrobić porównanie czasu time[10] do czasu załącz/wyłącz
//odczytanego w pętli for i przypisać do jednego z czterech
//kanałów status[] rozróżniając czy są to dni robocze pn-pt
}
else
{
//czy wolne sob-nd.
}
//===========================================================
// FUNKCJE WYKONAWCZE - STEROWANIE AUTOMATYCZNE I MANUALNE PRZEKAZNIKAMI
//===========================================================
if(status[1]==0) { PORTC |= _BV(4);}else{ PORTC &=~ _BV(4); status[1]=1;}
if(status[2]==0) { PORTC |= _BV(5);}else{ PORTC &=~ _BV(5); status[2]=1;}
if(status[3]==0) { PORTC |= _BV(6);}else{ PORTC &=~ _BV(6); status[3]=1;}
if(status[4]==0) { PORTC |= _BV(7);}else{ PORTC &=~ _BV(7); status[4]=1;}
//***********************************************************