- Antes de entrar al menú podemos encender los led y revisar las entradas.
Si veo que en tu codigo vos pedis que se presione # para ir al menu pero es posible presionar cualquier cosa. Pero es por como esta escrito
Ejemplo:
pediria por un #, al no darmelo seguiria preguntando por eso. Cuando lo recibo muestro el menu Y sigo adelante.
Loop: Ahora me quedo esperando por otra tecla, que es lo que tenes escrito y vuelvo nuevamente a mi loop
Es decir:
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)
.........
Si quisieras un menu mas complejo ya deberias de usar estructuras o una maquina de estado.
- No tengo la librerías keypad 4x4.
busca por internet:
http://www.ccsinfo.com/forum/viewtopic.php?t=28022&start=14con algo asi:
https://electrosome.com/wp-content/uploads/2012/06/Matrix-keyboard-pic-microcontroller.pngo imaginate y hace la tuya...
Siguiendo la imagen esa, las resistencias de pulldown estan para asegurar el 0 cuando no hay presionado ningun boton (puede ser pull-up tmb nomas que tendrias un 1 cuando no hay nada presionado). ya que tenes 4 entradas y 4 salidas, luego activas 1 por 1 las salidas, y cuando detectes un 1, segun la entrada que es y la salida activada vas a dar con la tecla.
ya con el principio de funcionamiento te daras cuenta como es.
Ahora yo pensaba:
8 pines para el teclado 4x4 ( portD )
8 pines para los leds ( a no ser que uses algo com un shift register ) (PortB)
8 pines entradas analogas ( y rogando que te quede un puerto completo con entrada analogicas ) (port A y E )
1 salida digital ( imagino que lo vas a hacer con el PWM sino va a ser muy pobre para un R-2R ) ( 1 pin PortC )
6 pines pines para el LCD ( si admite 4 bits o de ultima con un shif register reducirlo mas ) ( 6 pines PortC )
creo que te queda un pin libre nomas xD