[SOLUCIONADO]
Por si a alguien le sirve. Les cuento que separé todo el código en funciones como recomendaron Suky y Nocturno, y de esta manera se liberó la memoria de programa.
Ahora estoy migrando el código a c18 así que cuando esté listo lo posteo.
Jukinch.
void programar_parametros (){
lcd_gotoxy(1,1);
printf(lcd_putc, " MODO PROGRAMACION ");
lcd_gotoxy(1,2);
printf(lcd_putc, " INGRESE EL VALOR ");
delay_ms (500); //Para darle tiempo al usuario que suelte los 3 pulsadores que hicieron que entre en esta rutina
lcd_gotoxy(1,3);
printf(lcd_putc, " tblin [seg] "); // Tiempo de baja linea
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [0]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [0]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [0]--;}
}
lcd_gotoxy(1,3);
printf(lcd_putc, " talin [seg] "); // Tiempo de alta linea
delay_ms (500); //Para darle tiempo al usuario que suelte el pulsador de ok
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [1]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [1]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [1]--;}
}
lcd_gotoxy(1,3);
printf(lcd_putc, " tbuj [seg] "); // Tiempo de funcionamiento bujia
delay_ms (500); //Para darle tiempo al usuario que suelte el pulsador de ok
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [2]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [2]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [2]--;}
}
lcd_gotoxy(1,3);
printf(lcd_putc, " tbur [seg] "); // Tiempo de funcionamiento burro
delay_ms (500); //Para darle tiempo al usuario que suelte el pulsador de ok
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [3]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [3]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [3]--;}
}
/*
lcd_gotoxy(1,3);
printf(lcd_putc, " tcm [seg] "); // Tiempo de calentamiento motor
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [4]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [4]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [4]--;}
}
lcd_gotoxy(1,3);
printf(lcd_putc, " tar [seg] "); // Tiempo arrancado cuando se arranque solo
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [5]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [5]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [5]--;}
}
lcd_gotoxy(1,3);
printf(lcd_putc, " dpar [dias] "); // Cantidad de días para arranque automatico
while (input(PIN_D3)==0){ // Al presionar la tecla OK salgo de este parametro y voy al siguiente
lcd_gotoxy(1,4);
printf(lcd_putc, " %d ", variables_a_enviar [6]); // Tiempo de baja linea
if (input(PIN_D1)==1){ // Pulsador sube valor
delay_ms (500); //Anti rebote
variables_a_enviar [6]++; }
if (input(PIN_D2)==1){ // Pulsador baja valor
delay_ms (500); //Anti rebote
variables_a_enviar [6]--;}
}
*/
delay_ms(300);
parametros_modificados=1;
}
printf(lcd_putc, " %d ", variables_a_enviar [0]);printf(lcd_putc, " dpar [dias] "); printf(lcd_putc, " Pantalla 01 ");lcd_putc, " Pantalla 01 "; ??LP,XT,HS,RC,EC,EC_IO,H4,RC_IO
void main()
{
set_tris_a(0b11001000);
setup_timer_0(RTCC_INTERNAL);setup_wdt(WDT_2304MS);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
lcd_init();
enable_interrupts(INT_TIMER1);
disable_interrupts (GLOBAL);
setup_oscillator(OSC_4MHZ);
printf(lcd_putc,"Temporizador v.1\n");
lcd_putc("Farias Ezequiel");
LCD_DefineCaracter ();
CargaConfiguracion();
delay_ms(500);
pitido(50);
CARA_INFERIOR=0;
CARA_SUPERIOR=0;
menu();
MuestraEstado();
while(1){
// pitido(50);
restart_wdt();
if (!SW_ARRIBA) {// sube en el menú
pitido(20); // antirrebotes
while (!SW_ARRIBA); // esperamos que suelte tecla
if (EstadoEntradaTiempo)
ConfiguraTiempo(ARRIBA);
else {
OpcionMenu--;
if (!OpcionMenu)
OpcionMenu=(3+Estado+EnPausa);
if (OpcionMenu==3)
HayMensaje=MUESTRACARAS;
else
HayMensaje=0;
TicksMensaje=0;
menu();
MuestraEstado();
}
}
if (!SW_ABAJO) {// baja en el menú
pitido(20); // antirrebotes
while (!SW_ABAJO); // esperamos que suelte tecla
if (EstadoEntradaTiempo)
ConfiguraTiempo(ABAJO);
else {
OpcionMenu++;
if (OpcionMenu==(4+Estado+EnPausa))
OpcionMenu=1;
if (OpcionMenu==3)
HayMensaje=MUESTRACARAS;
else
HayMensaje=0;
TicksMensaje=0;
menu();
MuestraEstado();
}
}
if (!SW_INTRO) {// acepta opción
pitido(20); // antirrebotes
while (!SW_INTRO); // esperamos que suelte tecla
if (EstadoEntradaTiempo) {
ConfiguraTiempo(INTRO);
} else {
HayMensaje=0;
TicksMensaje=0;
EjecutaOpcion();
}
menu();
MuestraEstado();
}
}
}