TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: elDabids en 23 de Febrero de 2006, 09:09:00

Título: Manejo de una cadena de 50 o mas bits con Hitech
Publicado por: elDabids en 23 de Febrero de 2006, 09:09:00
Quero manejar una variabla o una estructura de 50 o mas bit a la cual pueda accesar bit a bit, como declaro dicha estructura y como hago para acceder a los bit, el programa es para un pic16f877, esta cadena la voy a mandar de forma serial a un registros de corrimiento.

de antemano gracias
Título: RE: Manejo de una cadena de 50 o mas bits con Hitech
Publicado por: antoniof en 23 de Febrero de 2006, 09:16:00
En principio se me ocurre hacer una estructura con 7 bytes.

Para acceder bit a bit debes hacer una funcion que modifique la estructura y para enviarla por el puerto serie, otra funcion que la "serialice"
Título: RE: Manejo de una cadena de 50 o mas bits con Hitech
Publicado por: grouchy en 23 de Febrero de 2006, 11:34:00
[cita title=Escrito originalmente por elDabids]Quero manejar una variabla o una estructura de 50 o mas bit a la cual pueda accesar bit a bit, como declaro dicha estructura y como hago para acceder a los bit, el programa es para un pic16f877, esta cadena la voy a mandar de forma serial a un registros de corrimiento.

de antemano gracias[/cita]

Hola.
A mi se me ocurre con un array de int.....

unsigned int variable[8];      // en total serian 8 * 8 =  64 bits
unsigned int  i,j;                   // para acceder a el bit predeterminado donde 0<i<8 y 0<j<8

// Para poder modifificar un bit en especifico, por ejemplo el bit 25 ,el cual esta en  variable [3], bit 0


i=3;
j=0;
bit_set(variable,j);   /// Colocar "1"
o
bit_clear(variable,j); /// Colocar "0"


// y para sacar esos datos de forma serial podrias hacerlo con un for
for (i=0;i<8;i++)
for (j=0;j<8;j++)
{
   if (bit_test(variable,j))
        output_high(PIN_X);     /// Define porque puerto quieres que salga
   else
         output_low(PIN_X);
  // Ejecutas un delay si es necesario...........................
}