Autor Tema: Dudita con el "while"  (Leído 1735 veces)

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

Desconectado carlyvalente

  • PIC16
  • ***
  • Mensajes: 108
Dudita con el "while"
« en: 03 de Enero de 2005, 03:01:00 »
Tengo un pedacito de code que no logro interpretar:

unsigned char datacount
for (datacount=8; datacount>0;datacount--)

{
DIO= sdata & 0x80;
sdata=sdata<<1;
while (!DCLK);
while (DCLK);
}

Weno, obviando las definiciones previas de variables etc etc , lo que me intriga es la penúltima linea (!while)

La variable DCLK es de un bit de entrada(0 o 1).
Entonces.. que hace (!DCLK)? espera a que sea 1 para saltar o para que sea 0?

Saluditos


Desconectado peddrorolo

  • PIC12
  • **
  • Mensajes: 56
RE: Dudita con el "while"
« Respuesta #1 en: 03 de Enero de 2005, 03:06:00 »
Hola carlyvalente,
La resolución es muy sencilla. Ya que como comentas la variable DCLK es de tipo bit. Entonces tu programa hace lo siguiente:
while(!DCLK);  Esperas en esa instrucción mientras la variable sea 0.
while(DCLK);  Esperas en esa instrucción mientras la variable sea 1.

Un saludo Pedro.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Dudita con el "while"
« Respuesta #2 en: 03 de Enero de 2005, 03:20:00 »
Según parece, tu código lee 8 bits y los mete en el byte sdata, pero va leyendo los bits al ritmo que le marque un clock externo, que viene indicado por la entrada DCLK.
Por lo tanto, esos dos "whiles" se esperan al siguiente pulso de reloj para leer el próximo bit.

Desconectado carlyvalente

  • PIC16
  • ***
  • Mensajes: 108
RE: Dudita con el "while"
« Respuesta #3 en: 03 de Enero de 2005, 04:42:00 »
Si si, exactamente es una UART sincrona esclava simulada por software. chas gracias a ambos Sonrisa

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Dudita con el "while"
« Respuesta #4 en: 03 de Enero de 2005, 05:09:00 »
No es estrictamente necesario,pero creo que es una buena costumbre que puede librarnos de algún rompedero de cabeza ponerle a cada bucle sus llaves {}
while(1)
  {
   bla bla bla...
  {
Así se hace el código más legible y ordenado

Saludos

Desconectado carlyvalente

  • PIC16
  • ***
  • Mensajes: 108
RE: Dudita con el "while"
« Respuesta #5 en: 03 de Enero de 2005, 06:06:00 »
Modulay, el code es asi de correcto.
Es decir que el while no hace nada "dentro de si mismo" (solo espera a por una entrada externa de datos) y salta a la proxima instrucción .Es por eso que el ejemplo que tu pusiste no concuerda con el mio ya que no ejecuta nada "entre corchetes" como lo hace el tuyo.
Al menos (con mi primitivo C) es lo que creo...

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Dudita con el "while"
« Respuesta #6 en: 03 de Enero de 2005, 06:24:00 »
Si no pones nada dentro de los corchetes no hay nada que ejecutar

while(...)  {}

Desconectado carlyvalente

  • PIC16
  • ***
  • Mensajes: 108
RE: Dudita con el "while"
« Respuesta #7 en: 03 de Enero de 2005, 06:58:00 »
Ya ves que nivel llevo de C Sonrisa
Me refería a las llaves. No lleva llaves porque solo ejecuta la condicion interna de los corchetes del while, eso.


 

anything