Subí el código
Hola ,
vuelvo a subir el código :
#include <18F2550.h>
#FUSES XT,NOWDT
#use delay(clock=4000000) // reloj a 4 MHz.
#define LCD_ENABLE_PIN PIN_C0
#define LCD_RS_PIN PIN_C1
#define LCD_RW_PIN PIN_C2
#define LCD_DATA4 PIN_B2
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B4
#define LCD_DATA7 PIN_B5
#include <LCD.C>
//#include <LCD420.C>
#use standard_io(A)
#define BUTTON_UP_PIN PIN_A1
#define BUTTON_ENTER_PIN PIN_A2
#define MENU_OPTION_COUNT 3
char* menuOptions[MENU_OPTION_COUNT] = {"Opcion 1","Opcion 2","Opcion 3"};
signed int selectedOption =0;
void displayMenu() {
lcd_putc('\f'); // Limpiar la pantalla
lcd_gotoxy(1, 1);
printf(lcd_putc, "Seleccione opcion:");
lcd_gotoxy(1, 2);
if (selectedOption == 0)
printf(lcd_putc, "> %s", menuOptions[0]);
else
printf(lcd_putc, " %s", menuOptions[0]);
lcd_gotoxy(21, 1);
if (selectedOption == 1)
printf(lcd_putc, "> %s", menuOptions[1]);
else
printf(lcd_putc, " %s", menuOptions[1]);
lcd_gotoxy(21, 2);
if (selectedOption == 2)
printf(lcd_putc, "> %s", menuOptions[2]);
else
printf(lcd_putc, " %s", menuOptions[2]);
}
void main() {
lcd_init();
lcd_putc('\f'); // Limpiar la pantalla inicialmente
delay_ms(100);
displayMenu();
if (input(BUTTON_UP_PIN)) {
delay_ms(200); // Rebote
selectedOption--;
if (selectedOption < 0)
selectedOption = MENU_OPTION_COUNT - 1;
}
if (input(BUTTON_ENTER_PIN)) {
delay_ms(200); // Rebote
switch (selectedOption) {
case 0:
// Acciones para la opción 1
lcd_putc('\f');
lcd_gotoxy(1, 1);
printf(lcd_putc, "Opcion 1 seleccion");
delay_ms(1000);
break;
case 1:
// Acciones para la opción 2
lcd_putc('\f');
lcd_gotoxy(1, 1);
printf(lcd_putc, "Opcion 2 seleccion");
delay_ms(1000);
break;
case 2:
// Acciones para la opción 3
lcd_putc('\f');
lcd_gotoxy(1, 1);
printf(lcd_putc, "Opcion 3 seleccion");
delay_ms(1000);
break;
default:
break;
}
}
}
}