#include <16f877a.h>
#use delay(crystal = 4MHz)
#define use_portb_kbd TRUE
#include <kbd_lib.c>
#include <LCD420.c>
#include <stdlib.h>
#define LED_1 PIN_D0
#define LED_2 PIN_D1
#define LED_3 PIN_D2
#define LED_4 PIN_D3
#define LED_5 PIN_D4
#define LED_6 PIN_D5
#define LED_7 PIN_D6
#define LED_8 PIN_D7
#define ENTRADA1 PIN_C0
#define ENTRADA2 PIN_C1
#define ENTRADA3 PIN_C2
#define ENTRADA4 PIN_C3
#define ENTRADA5 PIN_C4
#define ENTRADA6 PIN_C5
void mostrar_menu(){
lcd_gotoxy(3,1);
printf(lcd_putc
,"\fMENU PRINCIPAL\r"); lcd_gotoxy(1,2);
printf(lcd_putc
,"0 ESTADO PUERTO C "); lcd_gotoxy(1,3);
printf(lcd_putc
,"1,2,3,4,5,6,7,8"); lcd_gotoxy(1,4);
printf(lcd_putc
,"CONTROL OFF/ON DE LED"); }
void funcion_led_1(){
output_toggle(LED_1);
if (input_state(LED_1))
printf(lcd_putc
,"\fLed 1 encendido"); else
printf(lcd_putc
,"\fLed 1 apagado"); }
void funcion_led_2(){
output_toggle(LED_2);
if (input_state(LED_2))
printf(lcd_putc
,"\fLed 2 encendido"); else
printf(lcd_putc
,"\fLed 2 apagado"); }
void funcion_led_3(){
output_toggle(LED_3);
if (input_state(LED_3))
printf(lcd_putc
,"\fLed 3 encendido"); else
printf(lcd_putc
,"\fLed 3 apagado"); }
void funcion_led_4(){
output_toggle(LED_4);
if (input_state(LED_1))
printf(lcd_putc
,"\fLed 4 encendido"); else
printf(lcd_putc
,"\fLed 4 apagado"); }
void funcion_led_5(){
output_toggle(LED_5);
if (input_state(LED_5))
printf(lcd_putc
,"\fLed 5 encendido"); else
printf(lcd_putc
,"\fLed 5 apagado"); }
void funcion_led_6(){
output_toggle(LED_6);
if (input_state(LED_6))
printf(lcd_putc
,"\fLed 6 encendido"); else
printf(lcd_putc
,"\fLed 6 apagado"); }
void funcion_led_7(){
output_toggle(LED_7);
if (input_state(LED_7))
printf(lcd_putc
,"\fLed 7 encendido"); else
printf(lcd_putc
,"\fLed 7 apagado"); }
void funcion_led_8(){
output_toggle(LED_8);
if (input_state(LED_8))
printf(lcd_putc
,"\fLed 8 encendido"); else
printf(lcd_putc
,"\fLed 8 apagado"); }
void funcion_lectura_entradas(){
lcd_gotoxy(1,1);
printf(lcd_putc
,"INPUT1=%u",input
(ENTRADA1
)); lcd_gotoxy(1,2);
printf(lcd_putc
,"INPUT2=%u",input
(ENTRADA2
)); lcd_gotoxy(1,3);
printf(lcd_putc
,"INPUT3=%u",input
(ENTRADA3
)); lcd_gotoxy(11,1);
printf(lcd_putc
,"INPUT4=%u",input
(ENTRADA4
)); lcd_gotoxy(11,2);
printf(lcd_putc
,"INPUT5=%u",input
(ENTRADA5
)); lcd_gotoxy(11,3);
printf(lcd_putc
,"INPUT6=%u",input
(ENTRADA6
)); lcd_gotoxy(1,4);
printf(lcd_putc
,"REGRESO MENU PULSE #"); }
void main ()
{
CHAR k;
lcd_init();
kbd_init();
port_b_pullups(TRUE);
output_low(LED_1),(LED_2),(LED_3),(LED_4),(LED_5),(LED_6),(LED_7),(LED_8);
lcd_gotoxy(1,1);
printf(lcd_putc
,"Bienvenidos (^^,)"); lcd_gotoxy(1,2);
printf(lcd_putc
,"Pulsa # para ir menu");
while (kbd_getc()!='#'){};
mostrar_menu();
while (true)
{
k = kbd_getc();
if (k!=0)
switch(k)
{
case '0':
funcion_lectura_entradas();
break;
case '1':
funcion_led_1();
break; // Brake ya no se coloca al final de la selección.
case '2':
funcion_led_2();
break;
case '3':
funcion_led_3();
break;
case '4':
funcion_led_4();
break;
case '5':
funcion_led_5();
break;
case '6':
funcion_led_6();
break;
case '7':
funcion_led_7();
break;
case '8':
funcion_led_8();
break;
case '#':
mostrar_menu();
break;
}
}
}