Autor Tema: Manejo de una cadena de 50 o mas bits con Hitech  (Leído 1275 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado elDabids

  • PIC10
  • *
  • Mensajes: 2
Manejo de una cadena de 50 o mas bits con Hitech
« 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

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Manejo de una cadena de 50 o mas bits con Hitech
« Respuesta #1 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"

Desconectado grouchy

  • PIC10
  • *
  • Mensajes: 39
RE: Manejo de una cadena de 50 o mas bits con Hitech
« Respuesta #2 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...........................
}



 

anything