TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: japifer_22 en 25 de Agosto de 2011, 09:46:51

Título: que hace byte=(0xa0 | ((make8(maddress,2))<<1));
Publicado por: japifer_22 en 25 de Agosto de 2011, 09:46:51
hola gente. queria ver si me pueden desir que hace esta linea por favor:


 int8 byte;
 int32 maddres;
 byte=(0xa0 | ((make8(maddress,2))<<1));


se que | es una or de bit,  tambien que << es un desplazamiento a la izquierda y make8 es una rotación de bit
pero en general no entiendo bien que hace :oops:

Título: Re: que hace byte=(0xa0 | ((make8(maddress,2))<<1));
Publicado por: Suky en 07 de Septiembre de 2011, 12:59:43
Seguramente es el byte de control para acceder de una memoria eeprom o algún dispositivo. 0xA0 es fijo, el tercer byte (no es segundo!) de maddress contiene la dirección particular del dispositivo i2c. Lo rota 1 a le izquierda porque el primer bit es para indicar si se necesita realizar una escritura o lectura sobre el dispositivo.

De esa manera, el tercer byte de maddres tiene que tener un valor como es siguiente: 0b00000xxx. Entonces al hacer la operación mostrada queda:

byte=0b1010xxx0


Saludos!