Autor Tema: Menu con Submenus?  (Leído 26780 veces)

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

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Menu con Submenus?
« Respuesta #30 en: 28 de Agosto de 2004, 09:57:00 »
Vaya explicación Modulay. ¡Vivan los días de niebla en Málaga!, porque Modulay se queda en casa.

Oshow, ¿y ese pdf?

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #31 en: 29 de Agosto de 2004, 03:55:00 »
hola

Modulay gracias por tu muy buena explicacion, eres un Genio. La verdad nunca se me hubiera ocurrido  calcular asi el menu. tengo que probar aber como me sale, ya que mi menu es un poco mas grande. En cuanto tenga algo, lo posteo para que lo vean todos.

Aloha
Saludos desde Suiza, Pablo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #32 en: 29 de Agosto de 2004, 09:14:00 »
hola Modulay

He bajado el PCWH y el Proteus para poder simular el programa que tu has posteado mas arriba. Como es la primera vez que uso Proteus tuve que amodar algunas cosas. Ahora me falta el programa del LCD lcd.c. El que tengo yo es diferente al tuyo y me marca siempre error. Es posible que me lo pases?

Gracias de antemano
Saludos desde Suiza, Pablo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Menu con Submenus?
« Respuesta #33 en: 29 de Agosto de 2004, 09:23:00 »
Está aqui
Saludos

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #34 en: 29 de Agosto de 2004, 10:41:00 »
hola

gracias Modulay. Lo voy a probar y despues te cuento.

Aloha
Saludos desde Suiza, Pablo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #35 en: 29 de Agosto de 2004, 11:13:00 »
hola Modulay

disculpa que te moleste, pero no puedo hacer funcionar el Proteus con el file que me distes. Me aparece el siguiente error:

Building circuit...
Instantiating SPICE models...
[U1] PIC16 model release 6.5 SP5 (IR1) simulating PIC16876 device.
[U1] Loaded 256 bytes of persistent EEPROM data.
ERROR: [U1] Unable to open HEX file "menu.HEX".
[U1] Loaded 0 program words and 0 data bytes.
[DSIM] BOOT Error.
Real Time Simulation failed to start

Real Time Simulation FAILED.

Que puede ser? Algun Path que no esta bien registrado?

Gracias por tu ayuda
Saludos desde Suiza, Pablo.

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Menu con Submenus?
« Respuesta #36 en: 29 de Agosto de 2004, 11:21:00 »
No, es que modulay en el último momento debió cambiar el nombre al archivo. Verás que el hex que busca el proteus es menú.hex, sin embargo el que tú te has bajado es menu-estados.hex
Simplemente entra en el pic y cambia eso. O bien lo escribes o Examinar... como de costumbre.

Saludos!!

PD: si te fijas te lo indica en el ERROR
Saludos desde Huelva (ESPAÑA)

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #37 en: 29 de Agosto de 2004, 11:29:00 »
hola cuca

gracias por la respuesta. Encontre el problema y funciona muy bien. Aloha
Saludos desde Suiza, Pablo.

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Menu con Submenus?
« Respuesta #38 en: 04 de Septiembre de 2004, 07:25:00 »
Por si aún os sigue interesando, he vuelto a realizar el ejemplo con los menús que había hecho anteriormente. Bueno, no  está tan "currado" como el otro que tenía, pero ilustra muy bien, el funcionamiento que yo os había comentado.

Antes de nada, comentar que quizás no es la mejor forma de hacer un codigo muy optimizado (por el uso de globales, etc...) pero yo recuerdo haberlo hecho así por que se me imponía la codicion de usar las interrupciones en el portb. También se puede optimizar más escribiendo solo el asterisco en lugar de todas los strings, pero como ejemplo sirve....

No está muy comentado, pero creo que se entiende muy bien.
Otra cosilla, los menus no es que tengan mucho sentido (jejej) solo es un ejemplo.....

Está compilado con la version 3.206 y ocupa un 12%rom y 9%ram, para un 16f876a, creo que con un 18 apenas ocuparía....

 
Si queréis también tengo el fichero para simularlo en Proteus, aunque no lo subo al almacen porque no tengo nivel para subirlo, si queréis os lo paso, aunque es un esquema muy sencillo (lcd, pic y 4 pulsadores).

****************************************************
Codigo:

#include <16F876A.h>
#use delay(clock=4000000)
#include <lcd_modificado_trelles.c>
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD

#byte port_b=6


static int tecla;

////////////////////////////////////////////////////////////////////////////////
// Prototipos de las funciones
//
////////////////////////////////////////////////////////////////////////////////
void submenu(void);
void configuracion(void);
void visualizacion(void);


///////////////////////////////////////////////////////////////////////////////
// RUTINA DE INTERRUPCION POR TECLADO EN PINES RB4 A RB7
// DETECTAMOS TECLA PULSADA
///////////////////////////////////////////////////////////////////////////////

#INT_RB
void tecla_pulsada(void)
{
   delay_ms(20);  //esperamos para evitar rebotes

   if(!(port_b^0xF0))
      return;           //si se produce al soltar la tecla salimos de la interrupcion

      //asignacion de tecla pulsada

      if((!input(PIN_B7)))
         {
            tecla=7;       //tecla enter asignamos un numero cualquiera p.e.=7
            return;
         }


      if((!input(PIN_B6)))
         {
            tecla=6;       //tecla flecha abajo
            return;
         }

     if((!input(PIN_B5)))
         {
            tecla=5;       //tecla flecha arriba
            return;
         }

     if((!input(PIN_B4)))
         {
            tecla=4;       //tecla menu
            return;
         }

}



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//CUERPO PRINCIPAL DEL PROGRAMA:
//
////////////////////////////////////////////////////////////////////////////////


void main(void)
{
   //habilitar interrupciones
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   
   port_b_pullups(TRUE);   //pull-ups activadas en puerto B
   lcd_init();             //inicializacion del lcd

   while(1)
   {


      if(tecla==4)         //si se pulsa la tecla 4, vamos a los menus
         submenu();


      lcd_putc("f");
      lcd_putc("Esperando...");     //sino se pulsa, seguimos esperando....
      delay_ms(800);

   }
}


////////////////////////////////////////////////////////////////////////////////
//    Tratamiento de los menus....
//    Hubiera sido preferible usar la funcion lcd_getc() para detectar
//    que opcion está seleccionada, pero ignoro porque no me funciono, en lugar
//    de eso uso una variable llamada flagi
////////////////////////////////////////////////////////////////////////////////
void submenu(void)
{
      int1 flagi=0;  
      tecla=0;


      //imprimimos la pantalla inicial
      lcd_gotoxy(1,1);
      lcd_putc("* Configuracion");
      lcd_gotoxy(1,2);
      lcd_putc("  Visualización");

      //escaneamos la pulsacion de las teclas...
      while(TRUE)
         {
            if(tecla==6)
               {
                  tecla=0;
                  flagi=1;

                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("  Configuracion");
                  lcd_gotoxy(1,2);
                  lcd_putc("* Visualización");
               }
            if(tecla==5)
               {
                  tecla=0;
                  flagi=0;

                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("* Configuracion");
                  lcd_gotoxy(1,2);
                  lcd_putc("  Visualización");
               }
            if(tecla==7)
               {
                  tecla=0;

                  if(flagi==0)
                     configuracion();     //segun la opcion seleccionada (flagi) accedemos a uno u otro submenu....
                  else
                     visualizacion();
               }
            if(tecla==4)
               {
                  tecla=0;          //si se pulsa de nuevo la tecla menu, se vuelve a la pantalla principal...
                  return;
               }
         };
}

////////////////////////////////////////////////////////////////////////////////
//    Submenu de configuracion
//
///////////////////////////////////////////////////////////////////////////////
void configuracion(void)
{
      tecla=0;

      lcd_putc("f");
      lcd_gotoxy(1,1);
      lcd_putc("* Reloj");
      lcd_gotoxy(1,2);
      lcd_putc("  Sensor");


      while(tecla!=4)
         {
            if(tecla==6)
               {
                  tecla=0;

                 
                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("  Reloj");
                  lcd_gotoxy(1,2);
                  lcd_putc("* Sensor");
               }
            if(tecla==5)
               {
                  tecla=0;


                 
                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("* Reloj");
                  lcd_gotoxy(1,2);
                  lcd_putc("  Sensor");
               }
         };
   tecla=5;    //tecla=5 se vuelve al menú superior.....
   return;
}


void visualizacion(void)
{
      tecla=0;

      lcd_putc("f");
      lcd_gotoxy(1,1);
      lcd_putc("* Weee");
      lcd_gotoxy(1,2);
      lcd_putc("  Wooo");


      while(tecla!=4)
         {
            if(tecla==6)
               {
                  tecla=0;

                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("  Weee");
                  lcd_gotoxy(1,2);
                  lcd_putc("* Wooo");
               }
            if(tecla==5)
               {
                  tecla=0;


                  lcd_putc("f");
                  lcd_gotoxy(1,1);
                  lcd_putc("* Weee");
                  lcd_gotoxy(1,2);
                  lcd_putc("  Wooo");
               }
         };

   tecla=5;       //tecla=5 se vuelve al menú superior.....
   return;
}




Saludos.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Menu con Submenus?
« Respuesta #39 en: 05 de Septiembre de 2004, 14:11:00 »
joooode!!!

Aunque ya te lo he dicho por correo, muchisimas gracias!!! esto me viene muy pero que muy bien para lo que estoy haciendo!

Gracias oshow te has ganao el cielo :P

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Menu con Submenus?
« Respuesta #40 en: 06 de Septiembre de 2004, 01:23:00 »
hola

oshow me podrias mandar los ficheros para el Proteus. Me gustaria simularlo. Gracias

Pablo
Saludos desde Suiza, Pablo.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Menu con Submenus?
« Respuesta #41 en: 07 de Septiembre de 2004, 14:46:00 »
jo,jo tiene buena pinta...si me permites me gustaria colgarlo en mi web....

yo hize un menu usando un encoder y un pulsador, si quereis lo busco y lo cuelgo tambien..

saludos

por cierto cuca, la fresadora tiene tela de exito

Desconectado cucaracha

  • PIC24H
  • ******
  • Mensajes: 1409
    • CUCAWEB
RE: Menu con Submenus?
« Respuesta #42 en: 07 de Septiembre de 2004, 15:31:00 »
Jejeje, ya lo he notado. Me llegan preguntas a mi correo...
Ya tengo en mente la nueva versión, que espero empezar a diseñarla a finales de septiembre.
De momento, ideas, problemas y demás, pero todo en la cabeza...
Por supuesto, cuando esté lista ya sabes.

saludos!!
Saludos desde Huelva (ESPAÑA)

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Menu con Submenus?
« Respuesta #43 en: 07 de Septiembre de 2004, 15:44:00 »
Hola Pacala, por mi parte todo lo que pongo aqui lo puedes colgar tranquilamente , no tenéis ni que pedir permiso para publicarlo , ahora bien, en tu web tienes unos contenidos de muy alto nivel (entre ellos la fresadora de Cuca) y esto es solo es un ejemplillo que creo que no esta al nivel, pero bueno, si lo consideras suficentemente bueno, subelo tranquilamente, por mi parte no hay ningun problema.

Saludos.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Menu con Submenus?
« Respuesta #44 en: 08 de Septiembre de 2004, 13:55:00 »
bueno, pues colgado para disfrute de todos...
aqui os dejo el codigo que escribi para el control de uv1316, incluye un menu con un encoder.

espero que os sirva.