Autor Tema: Como manejar bit's en CCS  (Leído 1320 veces)

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

Desconectado Davidquiv

  • PIC10
  • *
  • Mensajes: 3
Como manejar bit's en CCS
« en: 01 de Septiembre de 2015, 15:50:47 »
Tengo una duda de como manejar los datos en un byte ya que necesito saber los primeros 7 bits de un byte pero no se como trabajarlo lo venia trabajando por una structura pero quisiera saber si hay otra forma
esto es lo que venia manejando

struct   Datos_byte
   {
      unsigned instruccion : 7;  //Instruccion de 7 bits
      unsigned RoW         : 1;  //Lectura=0 o escritura=1
   }Data , Direccion;
Nota: no se si es la forma correcta

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Como manejar bit's en CCS
« Respuesta #1 en: 01 de Septiembre de 2015, 15:58:32 »
Hola David, no te he entendido muy bien, ni tampoco se que quieres hacer con la estructura.

¿ lo que intentas saber es cuales son los primeros 7 bits  de los 8 de un byte? Y que deseas hacer hacer con esos 7 bits guardarlos como un único numero? O saber cuales son uno a uno?

Explica tu problema un poco mejor, si es algo parecido a lo que te he dicho arriba la estructura no te hace falta.

Un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Davidquiv

  • PIC10
  • *
  • Mensajes: 3
Re: Como manejar bit's en CCS
« Respuesta #2 en: 01 de Septiembre de 2015, 16:18:11 »
si, me llega un dato de un byte y necesito saber como acceder unicamente a los 7 primeros bits para compararlos

Desconectado Davidquiv

  • PIC10
  • *
  • Mensajes: 3
Re: Como manejar bit's en CCS
« Respuesta #3 en: 01 de Septiembre de 2015, 16:23:06 »
Es lo que trato de hacer:

struct   Datos_byte
   {
      unsigned instruccion : 7;  //Instruccion de 7 bits
      unsigned RoW         : 1;  //Lectura=0 o escritura=1
   }Data , Direccion;

void main()
{
   char caso;
   write_program_eeprom(0x1FF,0x00);               //limpia la direccion de memoria
   Data = 0x01;                               //inserta "1" en data para que se cumpla la condicion en el siguiente for
   for(int i=0;i<30||Data.RoW>0;i++)         //Retardo de 30 segundos para la modificacion de la direccion
      {
       
       if(kbhit()==1)
         {
         Data = getchar();
         }
           
         if(Data.RoW==1)                        //Pregunta si es de Escritura
            {
            Data.RoW = 0;
            unsigned direc;
            //Resetea el valor a lectura
            write_program_eeprom(addres,direc);         //Asigna la instruccion como nueva direccion   
            }
           
          delay_ms(1000);                     //Retardo de 1 segundo
      }

Honestamente no se nada sobre pic habia venido trabajando con puros MSP430 y me esta costando cambiarme de MCU

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re: Como manejar bit's en CCS
« Respuesta #4 en: 01 de Septiembre de 2015, 16:37:33 »
segun entiendo lo que deseas, se hace con una mascara
int dato;
dato=255;
dato =dato & 0b01111111; //ahora dato es igual a 127 los primeros 7 bits

"La curiosidad mato al gato, pero murio sabiendo"

Desconectado allennet

  • PIC16
  • ***
  • Mensajes: 108
Re: Como manejar bit's en CCS
« Respuesta #5 en: 01 de Septiembre de 2015, 16:40:19 »
si deseas leer retornando como valor es

bit_test(dato,bit)
devuelve V si el bit es 1 o F si es 0
"La curiosidad mato al gato, pero murio sabiendo"