Saludos
hice segun indico Suky en su código de ejemplo, pues..........., no me da tan buen resultado, seguramente algo estoy haciendo mal, solamente me aparece el texto "PRINCIPAL" en lapantalla LCD, no dibuja todo el menu, ni aun cuando presiono las teclas "arriba" y "abajo".
#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(C)
#use fast_io(D)
#bit enter = 6.0
//#byte PORTD = 0x06
#bit arriba = 8.6
#bit abajo = 8.7
#include <LCD4x20.C>
char cTestPulsadores();
void vDibujaMenu(char Menu);
#zero_ram
int8 NINGUNO = 1;
void main()
{
char Evento;
char VarMenu = 0;
set_tris_b(0x01);
set_tris_d(0xC0);
lcd_init();
vDibujaMenu(VarMenu);
while(1)
{
Evento = cTestPulsadores();
if (Evento != NINGUNO)
{
switch(VarMenu)
{
case 0:
VarMenu = 0x10;
break;
case 0x10:
case 0x11:
case 0x12:
if (Evento == ABAJO)
{
if (++VarMenu == 0x13) // PARA CONTROLAR EL DESBORDE
{
VarMenu = 0x10;
}
}
if (Evento == ARRIBA)
{
if (--VarMenu == 0x09) //PARA CONTROLAR EL DESBORDE
{
VarMenu = 0x12;
}
}
if (Evento == ENTER)
{
// ejecuto
VarMenu = 0x00;
}
break;
}
vDibujaMenu(VarMenu); //Dibujar el menu.
}
}
}
char cTestPulsadores()
{
if(arriba == 1)
{
delay_ms(20);
if (arriba == 1)
{
return(ARRIBA);
}
}
if (abajo == 1)
{
delay_ms(20);
if (abajo == 1)
{
return(ABAJO);
}
}
if (enter == 1)
{
delay_ms(20);
if (enter == 1)
{
return(ENTER);
}
}
return(NINGUNO);
}
void vDibujaMenu(char Menu)
{
switch(Menu)
{
case 0x00:
printf(lcd_putc, "\fPRINCIPAL");
break;
case 0x10:
printf(lcd_putc, "-> 1 opcion uno");
printf(lcd_putc, " 2 opcion dos");
break;
case 0x11:
printf(lcd_putc, "-> 2 opcion dos");
printf(lcd_putc, " 3 opcion tres");
break;
case 0x12:
printf(lcd_putc, "-> 3 opcion tres");
printf(lcd_putc, " 1 opcion uno");
break;
}
}
Tambien tengo la duda de cómo voy a manejar la cuestion esta de cuando va a ser presionado la tecla "ok" o "ENTER" (código),
Estas lineas de codigo, seguramente va algo ahí, pero no me ubico que es lo que va:
case 0x10:
case 0x11:
case 0x12:
Saludos y muchas gracias, y mil perdones, pero no entiendo del todo esto de menus.
NOTA: me gustaria subir la simulacion del proteus y el .hex, pero no se como subir archivos al foro.