Como acomodo el switch y el while para este menú?

#1
hola estoy haciendo un programa pero no me sale lo que intento hacer es un menú donde yo pulse la opcion dias y me lleve a otro submenú que es este que pongo abajo donde yo voy a elegir los dias. me explico: en mi lcd describo los dias de la semana y a cada día le he asignado el numero del 1 al 7 y de lunes a viernes respectivamente entonces quiero que cuando yo pulse 1 me despliegue lunes por ejemplo pero si digo 1 y 3 no mas no puedo y por ejemplo si son mas opciones como 1, 3, 5 y 7 me despliegue en pantalla lunes, miercoles,viernes y domingo y es que me hago bolas con el switch porque cuando inboco la la librería MiKBD.c me da la tecla del teclado matricial 4x4 pero si no le pongo el while ps no mas no me sale la tecla entonces a la hora de entrar en el switch es un verdadero problema. ya le busque y es que sería mejor con if anidados pero lo que yo quiero es hacerlo mas pequeño y creo que debería ser un switch pero alguien que me pueda orientar porfis.

Código:
#include <16f877a.h>
#fuses HS,NOWDT, NOPROTECT
#use delay (clock=20000000)

#include "DS1307.c"
#include "LCD420.c"
#include "MiKBD.c"

#include "24256.C"
void inicializa_reloj(void);
void reloj(void);
char menudiasuno();
char menudiasdos();

char sumacasos(char palabra);

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#bit enter = 6.0
#bit enter = 8.6
#bit enter = 8.7
int menu();
int x=0;
char c;
 unsigned char tecla;
 signed int i;
 //char num[7][15]=;
 char *palabra[7];
 
 void main()
{
 ds1307_init ();      ///se inicializa el ds1307
 lcd_init();
 kbd_init();
 disable_interrupts(GLOBAL);
set_tris_d(0X00);
 port_b_pullups(TRUE);
 char dias[3];
 while(true)
 { 
 tecla=kbd_getc();
 if(tecla!=0)
 {
switch(tecla)
{
 case \'1\':
   delay_ms(500);
   lcd_gotoxy(1,1);
   c="lunes";
    break;
case \'2\':
   delay_ms(500);
   lcd_gotoxy(1,2);
   c="martes";
   break;
   case \'3\':
   delay_ms(500);
   lcd_gotoxy(1,2);
   c="miercoles";
   break;
   default: c=0;
}
if(dias==\'1\')
{   delay_ms(500);
   lcd_gotoxy(1,2);
printf(lcd_putc,"es:%c",dias);

 
}}}} ...
 
Última edición por un moderador:

Temas similares

Arriba