Autor Tema: Duda con while en CCS  (Leído 9874 veces)

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

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Duda con while en CCS
« en: 27 de Septiembre de 2007, 21:20:47 »
Una sola pregunta amigotes.

si hago esto me resulta bien
Código: vb.net
  1. IF( input(PIN_A0) ) {
  2.                              
  3.                                output_bit(PIN_A1,1);
  4.                            
  5.                              }
pero si hago esto no funciona
Código: vb.net
  1. DO{
  2.        
  3.       output_bit(PIN_A1,1);
  4.  
  5.      }WHILE(input(PIN_A0));

o es que la sentencia WHILE no permite el input();
« Última modificación: 27 de Septiembre de 2007, 21:36:24 por manuelroin24 »
El conocimiento se consigue a base de esfuerzo...

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Duda con while en CCS
« Respuesta #1 en: 27 de Septiembre de 2007, 21:33:42 »

     Pues yo lo eh hecho asi y no tengo problemas
 
Código: CSS
  1. while(input(pin_b5))
  2.       {
  3.       }

     No creo que tenga diferencia con  do{}while();, deberia de funcionar.

              suerte
« Última modificación: 27 de Septiembre de 2007, 21:38:07 por Rulo »

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Duda con while en CCS
« Respuesta #2 en: 27 de Septiembre de 2007, 21:37:53 »
Podrias probar con el Do - While pq a mi no me funciona para nada simplemente ejecuta la funcion sin tomar en cuenta la condicion.
El conocimiento se consigue a base de esfuerzo...

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Duda con while en CCS
« Respuesta #3 en: 27 de Septiembre de 2007, 21:48:54 »


        pues acabo de modificar un programa, cambiando el while()  por do{}while();, y al parecer funciona igual.


            por que no pones un poco mas de codigo para ver si hay algo raro por ahi.

              Saludos

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: Duda con while en CCS
« Respuesta #4 en: 27 de Septiembre de 2007, 22:20:10 »


       pues como lo veo, con el while() {}  primero compara, y si no se cumple la condicion no realiza lo que esta dento de las llaves, se lo salta.


            con do {} while(); primero realiza una vez lo que hay dentro de las llaves, y despues compara, si se cumple la condicion, sigue repitiendo el proceso, si no se cumple se sale del bucle.

    espero te sirva.
 
                   Saludos.

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Duda con while en CCS
« Respuesta #5 en: 27 de Septiembre de 2007, 22:57:11 »
Perfecto amigo sali de mis dudas, en la ultima parte me aclaraste la duda , debe ser el cansancio mental. Muchas gracias!!
El conocimiento se consigue a base de esfuerzo...

Desconectado alexmorales

  • PIC10
  • *
  • Mensajes: 6
Re:Duda con while en CCS
« Respuesta #6 en: 24 de Marzo de 2018, 13:30:08 »
hola buen dia amigos soy nuevo en el foro tuve un problema asi de hecho habia copiado la funcion desde un codigo que estaba funcionando y de tanto indagar me di cuenta que lo que me afectaba era los fuses fast_io y fixe_io tengo #use FIXED_IO( A_outputs=PIN_A3,PIN_A2 ) y #use standard_io(b)
cuando colocaba esta funcion para leer el timer1

      Tiempo = 0;
      while(Tiempo < 10000 )                    // Detectar el primer pulso alto de 10 mseg. 
      {
       while (REC_RF == 0);                      // Está bajo y espera que suba
        set_timer1(0);                            // Pone a cero el Timer 1.
       while(REC_RF == 1);                      // Se mantiene en el pulso alto.     
        Tiempo = get_timer1 (); 

de esta manera no me funcionaba

de esta ora manera si funciona

Tiempo = 0;
      while(Tiempo < 10000 )                    // Detectar el primer pulso alto de 10 mseg. 
      {
       while(input(REC_RF) == 0);                      // Está bajo y espera que suba
        set_timer1(0);                            // Pone a cero el Timer 1.
       while(input(REC_RF) == 1);                      // Se mantiene en el pulso alto.     
        Tiempo = get_timer1 (); 

asi si funciona yo tuve que colocar (input (REC_RF)==0)


 ojala les pueda ayudar




 

anything