Soy más fan de los ZIP que de los RAR, porque así lo cargo directo a la nube para importarlo en el MPLAB Xpress, desde que es raro que use un PIC no instalo el compilador.
Viendo el código tienes un error catastrofico en la lógica
Si estas usando pull-up los valores de GPx serán siempre 1 cuando no presiones los botones, ¿sí conectaste los botones a tierra?
Lo otro que recomiendo es que cambies la comparación a la siguiente forma
if (contval <= contador)
De lo contrario tendrás problemas en el desborde no contemplado si presionas los botones a un valor inferior al del contador, deberías replantear la lógica para contemplar ese escenario.
Solo porque resulta que tengo un PIC12F675 por ahí es que se me ocurrió probarlo.
Funciona en la medida de que hace algo, si así es cómo debería hacerlo no tengo idea.
Viendo el código tienes un error catastrofico en la lógica
C:
while(1){
//TEMPORIZADOR
if (GPIObits.GP1 ==1){
contador++;
__delay_ms(50);
}
//CARGAMOS OBJETIVO TIEMPO
if (GPIObits.GP5==1){
contval=100; //6000 (5MIN)
}
if (GPIObits.GP4==1){
contval=200; //12000 (10MIN)
}
if (GPIObits.GP4==0 & GPIObits.GP5==0){
contval=300; //18000 (15MIN)
}
//ACCION AL TIEMPO DETERMINADO
if (contval==contador){
GPIObits.GP2=1;
__delay_ms(1000);
__delay_ms(1000);
__delay_ms(1000);
// Esperar hasta que la entrada GP0 sea igual a 1
while (GPIObits.GP0 == 0) {
}
GPIObits.GP2=0;
contador=0;
}
}
Si estas usando pull-up los valores de GPx serán siempre 1 cuando no presiones los botones, ¿sí conectaste los botones a tierra?
Lo otro que recomiendo es que cambies la comparación a la siguiente forma
if (contval <= contador)
De lo contrario tendrás problemas en el desborde no contemplado si presionas los botones a un valor inferior al del contador, deberías replantear la lógica para contemplar ese escenario.
Solo porque resulta que tengo un PIC12F675 por ahí es que se me ocurrió probarlo.