Autor Tema: Error con lazo where...  (Leído 1399 veces)

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

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Error con lazo where...
« en: 01 de Septiembre de 2017, 14:48:32 »
Hola,

Estoy usando el ingreso de caracteres por el UART para salir del lazo Do-Where, pero por mas que introdusco los caracteres correctos ('N', 'b', 'p', 'P', 'H') no logro salir de lazo, alguien me puede decir cual es mi error?

Estoy usando CCS V4.074

Aqui esta mi codigo:
Código: [Seleccionar]
#include <18F4620.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#use delay(clock=20MHz)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)// RS232 Estándar

char Keypress=' ';

#int_rda
void serial_isr() {

   Keypress=0x00;
   if(kbhit()){
      Keypress=getc();
      if(Keypress!=0x00){
         putchar(keypress);
         keypress=0x00;
      }
   }
}

void main() {

   enable_interrupts(global);
   enable_interrupts(int_rda);

   printf("\r\n\Listen on RS232 \r\n");

   do {
           

   } while ((Keypress != 'N') && (Keypress != 'b') && (Keypress != 'h') && (Keypress != 'H') && (Keypress != 'P'));

printf("\r\n\The End\r\n");

while(1);
}

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Error con lazo where...
« Respuesta #1 en: 01 de Septiembre de 2017, 14:58:10 »
Primero
C es case sensitive, asi que : Keypress es distinto de keypress, lo declaraste con mayuscula, asi que deberias usarlos a todos con mayuscula.

Código: C
  1. void serial_isr() {
  2.  
  3.    Keypress=0x00;
  4.    if(kbhit()){
  5.       Keypress=getc();
  6.       if(Keypress!=0x00){
  7.          putchar(keypress);
  8.          keypress=0x00;
  9.       }
  10.    }
  11. }

Ademas si observas, apenas recibe el caracter, lo envias de nuevo y estarias poniendo Keypress de nuevo en 0, lo cual cuando vuelva al do--while siempre va a ser 0... corregilo asi, de esa forma no lo pone en 0, y el unico que cambia la variable Keypress es el getc():

Código: C
  1. void serial_isr() {
  2.  
  3.    if(kbhit()){
  4.       Keypress=getc();
  5.       if(Keypress!=0x00){
  6.          putchar(keypress);
  7.       }
  8.    }
  9. }

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re:Error con lazo where...
« Respuesta #2 en: 01 de Septiembre de 2017, 17:16:32 »
 :-/ Tienes razon, Gracias!


 

anything