Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/09/2013 #1


Como acomodo el switch y el while para este menú?
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);

 
}}}} ...
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.