Autor Tema: volver al main desde dentro del main  (Leído 1912 veces)

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

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
volver al main desde dentro del main
« en: 20 de Diciembre de 2005, 11:14:00 »
bueno el problema es que en mi programa hay una rutina la cual simula que la maquina se apaga... bueno en realidad la maquina si se apaga asi como el display y todo lo demas, pero el micro sigue atento por si es que se presiona el boton de encendido... y es hay en donde en realidad necesito volver a ejecutar todo el codigo desde el main....

es posible lograr eso??

ej:

Codigo:
void main(){
          ........................
          ........................
                   .....................
                   .....................
                        if (prende_maquina==1)
                                    main();
                   .....................
           .......................
}


desde ya agradesco cualquier tipo de comentario

Desconectado El_Coach

  • PIC12
  • **
  • Mensajes: 79
RE: volver al main desde dentro del main
« Respuesta #1 en: 20 de Diciembre de 2005, 12:20:00 »
Yo lo haría así:


main()
{
    ......

    while(1)
    {
        while( comprobar_boton_encendido() );    // Que la subrutina devuelva un cero cuando se pulse el botón de encendido

        sistema_on();   // Que haga lo que tenga que hacer mientras esté encendido

        sistema_off();   // Que haga lo que tenga que hacer para apagar el sistema
    }
}


Mas o menos es lo que yo haría, adaptándolo a lo que quieras realizar en tu programa.
Pero si cuando dices que apagas el sistema, en realidad paras todo el sistema, incluso el PIC, yo utilizaría la función sleep(). Y luego activar con el pulsador una interrupción externa, haciendo que el micro despierte y empiece de nuevo.

Espero te sirva de algo RollEyes


Saludos
"Hazlo o no lo hagas, pero nunca lo intentes"

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: volver al main desde dentro del main
« Respuesta #2 en: 20 de Diciembre de 2005, 12:49:00 »
Con esto volverás otra vez al main():

if (prende_maquina==1)
   reset_cpu();

Un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: volver al main desde dentro del main
« Respuesta #3 en: 20 de Diciembre de 2005, 15:33:00 »
Hola,

he usado la función break; cuando uso switch(var).

¿Es posible usar break en medio del void main(void) para dejar de correr esa rutina?

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: volver al main desde dentro del main
« Respuesta #4 en: 20 de Diciembre de 2005, 17:16:00 »
El main siempre se ejecuta. La única forma que se me ocurre para terminar la ejecución del main es poner al micro en modo sleep, o bien hacer un bucle, como dice Coach, donde se testee la condición de salida del mismo.

Lo del reset_cpu() es muy buena idea, sobre todo para empezar desde el principio del programa desde cualquier subrrutina, porque supongo que esa función limpiará la pila tambien.

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: volver al main desde dentro del main
« Respuesta #5 en: 20 de Diciembre de 2005, 23:51:00 »
muchas gracias a todos la verdad es qeu esa instruccion no la conocia (reset_cpu()), la que me imagino sera la solucion...  hare las pruebas y comentare como me ha ido

gracias... despide

-==XooTRAooX==-

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: volver al main desde dentro del main
« Respuesta #6 en: 21 de Diciembre de 2005, 00:39:00 »
absolutamente efectivo...... la solucion es valida y trabaja a la perfeccion...

Codigo:
if (prende_maquina==1)
              reset_cpu();

gracias a todos por agregar un granito de arena mas a mis conocimientos


 

anything