Autor Tema: Problema raro al decrementar una variable  (Leído 2423 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
Problema raro al decrementar una variable
« en: 09 de Octubre de 2005, 12:21:00 »
Hola todopic!! He decidido hacerme un temporizador para mi insoladora. El programa con los menus de configuracion y todo funciona perfectamente. El problema aparece cuando los segundos son mas pequeños que diez. en vez de aparecer 9-8-7... sale 90-80-70. Alguien sabe a que puede ser debido este problema??
Codigo:


#int_timer0
void temporitza()
{
static byte timer_0_conta = 0;
if (timer_0_conta < 16) timer_0_conta++;
   else
   {
   timer_0_conta=0;
   sec--;
   lcd_gotoxy(1,1);
   printf(lcd_putc,"       %d:%d",min,sec);
     
 }
set_timer0 (6);  
}


La interrupcion salta casa segundo y va decrementando la veriable sec que pertenece a los segundos.

Si pongo el printf dentro de la funcion principal no ocurre este problema, pero si lo meto en la interrupcion del timer decrementa como he dicho anteriormente.

No lo entiendo....

Salu2 y gracias de antemano.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Problema raro al decrementar una variable
« Respuesta #1 en: 09 de Octubre de 2005, 12:27:00 »
Tal vez me equivoque, pero... printf creo que usa salto a subrutina en su algoritmo, ¿no?

Si lo usa, entonces tal vez te estés acabando la pila y por eso haga cosas raras. Yo sacaría las instrucciones del salto a interrupción y las pondría en otro lado. No estoy seguro Vacilando

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Problema raro al decrementar una variable
« Respuesta #2 en: 09 de Octubre de 2005, 12:45:00 »
Ya lo he podido solucionar, este 0 que salia no formava parte de la variable, sino que era un residuo que se quedaba en el lcd, antes de sacar el tiempo por el lcd he borrado la primera linea y de esta forma el 0 desaparece.

Gracias de todas formas.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Problema raro al decrementar una variable
« Respuesta #3 en: 09 de Octubre de 2005, 13:48:00 »
No estoy seguro que funcione bien, pero creo que si lo pones como te adjunto, los minutos y los segundos siempre ocuparán dos dígitos, con independencia de que sean menores que 10. Si funciona bien, es mucho más estético:

printf(lcd_putc,"       %2d:%2d",min,sec);

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Problema raro al decrementar una variable
« Respuesta #4 en: 09 de Octubre de 2005, 13:56:00 »
De funcionar, funciona bien, lo que pasa es que lo suyo seria que cuando los segundos sean mas pequeños que diez, el digito correspondiente a las decenas apareciera un 0 y no un espacio en blanco, en 5 minutillos lo dejo como he explicado, asin si que quedaria mas estetico.

Salu2

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
RE: Problema raro al decrementar una variable
« Respuesta #5 en: 09 de Octubre de 2005, 14:02:00 »
Ya, esta hecho, es que no me acordaba de como se hacia y lo he tenido que consultar al manualGiño.

 printf(lcd_putc,"%02d:%02d",min,sec);
de esta forma tanto los minutos como los segundos tienen 2 digitos y en el caso que uno tenga un solo digito te rellena el espacio con un 0.

Salu2


 

anything