Para manipular la hora con pulsadores en los pines A0, A1 y A2 yo haría lo siguiente:
#define edit PIN_A0
#define add PIN_A1
#define less PIN_A2
void main(void){
int1 config=0;
int var=0,temp_hh,temp_mm,temp_ss,temp_dd,temp_me,temp_an;
... //configuraciones
while(true){
if(config==0){
get_hora(); // capturo hora y fecha del RTC
get_fecha();
printf(lcd_putc,"\f%02u:%02u:&02u",hh,mm,ss); // lo muestro en el LCD
printf(lcd_putc,"\f%02u/%02u/&02u",dd,me,an);
delay_ms(200);
}
if(input(edit)){ // si se pulso edit
do{
delay_ms(20); // antirrebote
}while(input(edit));
if(config==0){ // si estaba en modo normal
config=1; // cambio a modo configuración
temp_hh=hh; // copio los valores del RTC capturados anteriormente a variables temporales
temp_mm=mm;
temp_ss=ss;
temp_dd=dd;
temp_me=me;
temp_an=an;
}
var++; // var indica que variable se va a modificar, si horas, minutos,etc.
if(var==7){ // si var es 7 ya no hay más variables que modificar
var=0; // y vuelvo a modo normal, osea mostrar la hora
config=0;
set_hora(temp_hh,temp_mm,temp_ss); // fijo la nueva hora y fecha configurada
set_fecha(temp_dd,temp_me,temp_an);
}
}
if(input(add) && config==1){ // si pulso add y está en modo configurar
do{
delay_ms(20);
}while(input(add));
if(var==1){ // incremento valor de horas
temp_hh++;
if(temp_hh>59)
temp_hh=0;
}
else if(var==2){ // incremento valor minutos
temp_mm++;
if(temp_mm>59)
temp_mm=0;
}
else if(var==3){ // incremento segundos
temp_ss++;
if(temp_ss>59)
temp_ss=0;
}
else if(var==4){
...
}
else if(var==5){
...
}
else if(var==6){
... // algo similar para el día, mes y año, te lo dejo de tarea :mrgreen:, podes controlar tb el mes si es de
// 30 ó 31, o si es febrero bisiesto o no, y hasta un otro pulsador para moverse entre las variables a
// modificar, para ir de derecha a izquierda tb
}
}
if(input(less) && config==1){
... //mismo proceso anterior pero ahora decrementando en cada variable correspondiente
}
}
}
Creo que con eso puede servir, claro que falta que termines el código y que lo pongas a correr para detectar los bugs. Por ejemplo las funciones set_xxx() y get_xxx() son para el RTC que con la librería puedes crearlas facilmente.
Ojala pueda servirte, un saludo, y algo tarde la respuesta de la idea que te dije, pero más vale tarde que nunca, no? y disculpas por al tardanza, s tienes alguna duda sobre el código ahí me avisas
Un saludete.