TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: vasconinicolas en 24 de Junio de 2008, 13:08:49

Título: Duda en manejo de array
Publicado por: vasconinicolas en 24 de Junio de 2008, 13:08:49
Tengo esto y no funciona, seguramente es debido a mi desconocimiento de sintaxis del C, algun alma piadosa me lo confirmaría?

char vec[8]={1,3,2,6,4,12,8,9}, pp=0;

if (pp=7){
pp=0;}
else{
pp++;}
portb=vec[pp];     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..
}

Gracias y saludos.
Título: Re: Duda en manejo de array
Publicado por: jfh900 en 24 de Junio de 2008, 13:13:09
Hola vasconinicolas .

La comparación se hace con pp==7 y no con pp=7 que es una asignación.

Un saludo
Título: Re: Duda en manejo de array
Publicado por: firepic en 24 de Junio de 2008, 13:59:11
Es sólo un detalle, pero igual te lo digo: cuando se ejecuta una sóla instrucción dentro del if o else, no hacen falta las llaves.
Se ve más elegante así:
Código: C
  1. char vec[8]={1,3,2,6,4,12,8,9}, pp=0;
  2.  
  3. if (pp==7) pp=0;
  4. else pp++;
  5. portb=vec[pp];     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..


Otra cosa, supongo que tienes definido correctamente el portb para que te pueda funcionar de esa forma.
Yo lo hago usando la instrucción "output_x(valor)", es decir, quedaría así:

Código: C
  1. char vec[8]={1,3,2,6,4,12,8,9}, pp=0;
  2.  
  3. if (pp==7) pp=0;
  4. else pp++;
  5. output_B(vec[pp]);     // escribo en portb el valor binario de vec correspondiente a la posicion pp en el arreglo..


De todos modos como tú lo haces también debe funcionar. No más te estoy dando otra opción.
Ok saludos, nos leemos!  :mrgreen:


Título: Re: Duda en manejo de array
Publicado por: vasconinicolas en 24 de Junio de 2008, 20:25:24
Hola jfh, gracias por avivarme con ese gran "detalle".. lo que es empezar en C y aprender a los tumbos... eso si, no se me olvida más el detalle jejeje.
Firepic, una sutileza de experto la suya, gracias igual.. respecto a la asignacion del portb yo la habia hecho asi:

#byte portb=0x06

y luego la llamaba

portb=vec[pp];

voy a probar la que tu dices porque me parece mejor.
Un abrazo
N.
Título: Re: Duda en manejo de array
Publicado por: firepic en 24 de Junio de 2008, 20:59:19
Yo no diría lo de "experto", pues estoy aprendiendo igual que tú  :D
Y no hay nada que agradecer... yo también he recibido mucha ayuda aquí en el foro... para eso estamos, para ayudarnos en lo que se pueda.
Saludos, nos leemos!  :mrgreen:
Título: Re: Duda en manejo de array
Publicado por: MLO__ en 24 de Junio de 2008, 22:10:25
Hola.

Puedes usar la configuracion que tienes, corre igual, la unica diferencia sera cuando quieras migrar a otro microcontrolador (un 18 por ejemplo), la direccion no sera la misma y por ende no te correra, por eso yo utilizo tambien lo que menciono Javier.

Saludos