/*
se lee la hora del RTC con la funcion get_hora(), en variables hora,min y seg
minsd, min1, mins2,... mins8 son los datos de hh:mm convertidos a solo minutos de inicio de cada horario
le llame al 9no horario minsd, pues como casi siempre esta en horarios nocturnos es el horario de dormir :D
min_pas es la cantidad de minutos pasados desde las 00:00 hrs, de la lectura de la hora actual
el valor que devuelve salto_hora es el horario en que se encuentra el programa.
*/
long min_pasados(void){ // devuelve la cantidad de minutos q han pasado desde las 0hrs
int16 minuts;
minuts=_mul(hora,60);
minuts+=min;
return(minuts);
}
int1 en_rango(int16 inicio,int16 fin){
if(inicio>fin){ //caso de que la hora inicio y fin cruce un dia
if(((min_pas>=inicio)&&(min_pas<1439))||((min_pas>=0)&&(min_pas<fin))) //la hora esta entre la hora de inicio y las 23:59h
return(1); // o la hora es mayor que las 00:00h y menor que la hora de fin
else
return(0);
}
else if(inicio<fin){ //caso que la hora inicio y fin este dentro del mismo dia
if((min_pas>=inicio)&&(min_pas<fin))
return(1);
else
return(0);
}
}
int salto_hora(void){
get_hora(); // lee la hora del rtc y lo guarda en hora, min, seg
min_pas=min_pasados();
if(en_rango(minsd,mins1) && minsd!=OFF)
return(9);
if(en_rango(mins1,mins2) && mins1!=OFF)
return(0);
if(en_rango(mins2,mins3) && mins2!=OFF)
return(1);
if(en_rango(mins3,mins4) && mins3!=OFF)
return(2);
if(en_rango(mins4,mins5) && mins4!=OFF)
return(3);
if(en_rango(mins5,mins6) && mins5!=OFF)
return(4);
if(en_rango(mins6,mins7) && mins6!=OFF)
return(5);
if(en_rango(mins7,mins8) && mins7!=OFF)
return(6);
if(en_rango(mins8,minsd) && mins8!=OFF)
return(7);
}