Autor Tema: Ciclo infinito dentro de un Case  (Leído 1468 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Ciclo infinito dentro de un Case
« en: 11 de Octubre de 2009, 20:56:41 »
Tengo un problemita en esta parte del codigo

Código: C
  1. case 'C':
  2.       lcd_gotoxy(x,y) ;      //cursor para escribir mensaje
  3.       lcd_putc("A Letra La Precione " ) ;   //muestra por pantalla el mensaje
  4.       delay_ms(150);        
  5.       x++;
  6.       if(x>16){
  7.          x=-8;
  8.          y++;
  9.          if(y>2)        
  10.             y=1;        
  11.         }
  12.       break;
Lo que pasa es que ya probe poniendo
case 'C':
While(1);
case 'C':
a:
....
....
goto a;
y si me genera el efecto de movimiento en el mensaje el detalle es que cuando preciono A o B no me manda al menu donde se encuentran sus casos

Código: C
  1. #include <18f4550.h>
  2. #fuses XT,NOWDT,NOPROTECT,NOLVP     //ordenes para el programador
  3. #use delay (clock=8000000)         //Fosc=4Mhz
  4. #include <kbd_lib.c> //libreria manejo TECLADO 4X4
  5. #include <lcd_2.c> //libreria manejo lcd 4 bits
  6.  
  7.    char y=1;               //indice columnas
  8.    signed char x=1;         //indice filas
  9. void main() {
  10.    char k;
  11.    int  z,s;
  12.          
  13.    lcd_init();
  14.    kbd_init();
  15.    port_b_pullups(TRUE);
  16.  
  17.       lcd_putc("\fTemp Actual=");
  18.       lcd_putc("\nMenu Pres A o B");
  19.                                    
  20.    while (TRUE) {
  21.       k=kbd_getc();
  22.       z=k-48;                             //Conversión numérica
  23.       switch (k){
  24.            
  25.       case 'A':
  26.       lcd_putc("\fLimite superior");
  27.       lcd_putc("\nSubir=C #=Back");
  28.       break;
  29.       case 'B':
  30.       lcd_putc("\fLimite Inferior \nSubir=D #=Back");
  31.       break;
  32.       case 'C':
  33.       lcd_gotoxy(x,y) ;      //cursor para escribir mensaje
  34.       lcd_putc("A Letra La Precione " ) ;   //muestra por pantalla el mensaje
  35.       delay_ms(150);        
  36.       x++;
  37.       if(x>16){
  38.          x=-8;
  39.          y++;
  40.          if(y>2)        
  41.             y=1;        
  42.         }
  43.       break;
  44.       }
  45.    }
  46. }

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Ciclo infinito dentro de un Case
« Respuesta #1 en: 12 de Octubre de 2009, 22:00:07 »
Pues si colocas un ciclo infinito dentro de un case, nunca va a salir de ahí no?

Que es lo que quieres que haga el programa? Que despliegue una marquesina con el texto que tiene y que según lo que se presione vaya a una parte del menú?


Saludos
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ciclo infinito dentro de un Case
« Respuesta #2 en: 12 de Octubre de 2009, 22:10:12 »
Linda marquesina MLO_  8) darck, puedes usar un do{...}while(Salir==0); Donde Salir sea puesto a 1 al pulsar una tecla.-


Saludos!
No contesto mensajes privados, las consultas en el foro