TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 16 de Diciembre de 2011, 12:05:42

Título: Problemas con D0-While
Publicado por: Medusa en 16 de Diciembre de 2011, 12:05:42
Hola, alguien me puede decir cual es mi error con este codigo...

Código: [Seleccionar]
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOSTVREN
#use delay(clock=20000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, ERRORS)// RS232 Estándar
#define RESETX       0   
char Estado = RESETX;   
int8 k;
#define   Program      PIN_B4

void main()   
{   

while (TRUE) {   
 
   k = 1;
   Estado = 1;
   do{
      if (Estado == 1) {                       
      k++;
     } 

   } while ((input(Program)!=0)||(k < 5));
  }   
}
Por que sale  de la condicional do--while solo cuando se cumple las dos condicones, yo necesito que salga de esta condiconal solo al cumplirse una de las condicones!!!

Título: Re: Problemas con D0-While
Publicado por: AngelGris en 16 de Diciembre de 2011, 12:25:54
............
Por que sale  de la condicional do--while solo cuando se cumple las dos condiciones, yo necesito que salga de esta condicional solo al cumplirse una de las condiciones!!!


  Como está expresado el while, te vas a quedar allí mientras que K < 5 o la entrada sea distinto que 0, o sea que para salir de allí se van a tener que cumplir con que K >= 5 y a su vez la entrada sea 0.

  Creo que para que salga al cumplirse cualquiera de ellas deberías emplear &&. Así sólo permanecerá en el ciclo siempre que K < 5 y a su vez que la entrada sea distinta de 0. Si alguna de las dos condiciones no se cumple, se saldrá del ciclo.
Título: Re: Problemas con D0-While
Publicado por: Medusa en 16 de Diciembre de 2011, 12:32:52
 :-/, tienes razon.. gracias !!!