TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jajaime_ji en 01 de Agosto de 2007, 04:05:44

Título: Ayuda con matriz de etiquetas: #define salidas{PIN_C1,PIN_B0...}
Publicado por: jajaime_ji en 01 de Agosto de 2007, 04:05:44
Hola a todos,

Me gustaría hacer un ciclo for en el que el índice i me sirva para poner en high la salida del micro. Es decir:

for (i=0;i<=7;i++)
{
      if(bit_test(dato,i))
               output_high(salida(i))
}

Es decir, lo que me interesaría es hacer un vector (o matriz), en el caso anterior salida, en el que contenga las etiquetas de los pines PIN_Cx o PIN_Bx
para poder utilizarlos en un ciclo for.
He probado con #define y nada. Y he buscado por la ayuda del CCS.
A ver si alguien me puede ayudar.

Gracias de antemano.
Saludos.
Título: Re: Ayuda con matriz de etiquetas: #define salidas{PIN_C1,PIN_B0...}
Publicado por: Nocturno en 01 de Agosto de 2007, 05:07:28
Eso no es válido en CCS. Las etiquetas se traducen por su contenido en el momento de la compilación, no el momento de la ejecución.

Yo en tu caso optaría por enviar un byte al puerto entero, conteniendo un 1 en el pin que quieres encender:
for (i=0;i<=7;i++)
{
      if(bit_test(dato,i))
               output_b(1<<i)
}
Título: Re: Ayuda con matriz de etiquetas: #define salidas{PIN_C1,PIN_B0...}
Publicado por: jajaime_ji en 01 de Agosto de 2007, 05:59:32
Hola nocturno:

En primer lugar muchas gracias por tu respuesta.
El problema que tengo con tu solución es que las son 12 salidas y no estan tan ordenadas como deberían.
En principio lo he solucionado con una matriz de enteros, colocando en cada posición la dirección de cada pin que viene en el archivo .h del micro.

Lo que ocurre es que no quería ocupar espacio en memoria porque voy muy justo.


Un saludo!!

Título: Re: Ayuda con matriz de etiquetas: #define salidas{PIN_C1,PIN_B0...}
Publicado por: Nocturno en 02 de Agosto de 2007, 01:51:23
Pues no se me ocurre mejor opción que la matriz de enteros que ya utilizas.
Título: Re: Ayuda con matriz de etiquetas: #define salidas{PIN_C1,PIN_B0...}
Publicado por: jajaime_ji en 03 de Agosto de 2007, 03:40:15
Bueno,
Pues así se queda.

Muchas gracias nocturno de todas formas!!!

Un saludo a todos.