Autor Tema: salir de la rutina por tiempo si no se detecta actividad en la rutina  (Leído 1531 veces)

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

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
estoy intentando hacer un codigo donde al precionar una tecla ingrese a la rutina de codigo sino se detecta actividad en la rutina  salga automaticamente  por conteo de tiempo

la rutina es para incrementar el valor de una variable y quiero que sino sesaca dela rutina manual mente lo aga automaticamente  como lo hace (el menu de un tv sino no se hace mas cambios se sale automaticamente del menu)


esto es lo que tengo en la parte de la rutina

//incremento o de cremento de temperatura aguardar en la eeprom
if(input(pin_a1)==1)
while(1)
{
if(input(pin_a2)==1)
{

contador++;

if(contador==255)
{
contador=0;
}
}


//decremento de temperatura aguardar en la eeprom

if(input(pin_a3)==1) //tecla para entrar en la rutina
{

contador--;
if(contador==0)
{
contador=256;
}
}
lcd_gotoxy(1,2);
lcd_putc("TMN");
lcd_gotoxy(5,2);
printf(lcd_putc,"%3u",contador);
delay_ms(500);



//salir de la aplicacion de contador manual
if(input(pin_a4)==1)
{
break;
}


//guardado en la eeprom interna del pic
if(input(pin_a5)==1)
{
write_eeprom(0x00,contador);
break;
}
}

hasta aqui la rutina solo sale manual mente  al precionar la tecla de salida 

este es el codigo para que salga automaticamente por conteo de tiempo pero lo que quiero es que comiense a ejecutarse cuando no aya activida en el codigo
ejemplo que lla sedeje de precionar al guna tecla

//salida del codigo por tiempo
salida++;
if(salida==5)
{
salida=0;
break;
}

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: salir de la rutina por tiempo si no se detecta actividad en la rutina
« Respuesta #1 en: 16 de Junio de 2012, 20:14:49 »
Con un timer, lo activas al entrar en la rutina, en la interrupción por desborde vas aumentando una variable, ahora en tu rutina pones otro if comprobando esta variable y cuando sobrepase el valor deseado sales de la rutina.

Si no quieres usar timer también puedes ir incrementando una variable en la misma rutina, calculas el tiempo que tarda en recorrerla y lo mismo de antes, if comprobando y cuando pase de.. break.

A todo esto, cada vez que haya actividad contador a 0.

Un saludo
« Última modificación: 16 de Junio de 2012, 20:20:59 por tannke »

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: salir de la rutina por tiempo si no se detecta actividad en la rutina
« Respuesta #2 en: 18 de Junio de 2012, 22:10:46 »
por ahora lo unico que seme ocurrio fue darle mas tiempo mientras aumento la varible  y grabo en la eepron

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: salir de la rutina por tiempo si no se detecta actividad en la rutina
« Respuesta #3 en: 19 de Junio de 2012, 10:41:38 »
 :shock: Ostras, no me habia fijado en la ultima parte de tu codigo, bueno, pues simplemente ahi lo que puedes hacer es en cada uno de tus "if" poner la variable salida a 0.

Un saludo.

Desconectado underwol2

  • PIC12
  • **
  • Mensajes: 53
Re: salir de la rutina por tiempo si no se detecta actividad en la rutina
« Respuesta #4 en: 19 de Junio de 2012, 12:23:47 »
intentando mejorar el programa e echo con pulsadores como el del ejemplo pero tambien lo estoi armando con teclado 4x4 matricial
me apresentado dos problemas asolucionar el codigo se basa el pequeño codigo para rastrear tecla precionada por teclado muy comun por internet a funcinado hasta que le puse la funcion de que guardar en la eeprom al precionar la tecla if(c=='*'); lo raro es qie al precionar la primera tecla de una sesale ino puedo  escribir nisiquiera el numero aguardar en la eeprom
haci que intente utilizar el sistema de pulsadores para guardar en la eeprom ya probado y no funciono aberigue y toca combertir de char a hexa para poder guardar en la eeprom
 me gustaria que quedara sola mente con el teclado 4x4 y no tubiera que utilizar pulsadores  ya que con el teclado tengo muchas funciones de numeros y letras con los mismos 8 entradas

alguien tiene ejemplos de codigo donde se escriba en el teclado 4x4 matricial y se guarde en la eeprom al precionar otra tecla del mismo teclado
el proposito de este es para guradar en variables temperatura minima y temperatura maxima y ojala poder modificar otras varibles

este es codigo con teclado 4x4 que intento hacer funcionar completamente  se sale al presionar una tecla y elque la ocasiona la salida  es  if(c=='*') si lo quito no se sale

void gtmn(void)
{
lcd_putc("\f");
 lcd_putc("TEMPERATURA \nMINIMA");
 delay_ms(1000);
lcd_gotoxy(8,1);
lcd_putc("\f");
for(i=0;i<16;i++)
{
do
{
c=kbd_getc();
}
while(c==0);
printf(lcd_putc,"%c",c);
limit=i+1;
if(c=='*')
write_eeprom(0x00,c);
break;

if(c=='D')
break;

salida++;
if(salida>20)
{
salida=0;
break;
}


}
}