Está en la página 1de 2

Ya obtenido el arreglo con los valores del Hx711 el arreglo tendrá dos posibles valores en cada

posición, estos valores pueden ser 0X00 y 0X10 (nivel bajo o nivel alto).

Por ejemplo

Temporal[25]={0x0,0x0,0x0,0x10,0x10,…,0x00,0x10}

Temporal[25]={MSB,………………………………………..LSB}

Para pasar los valores del arreglo temporal a una variable de tipo entera se tendrá que asignar un
0 cuando en el arreglo este un 0x00 o un 1 cuando en el arreglo este un 0x10, teniendo en cuenta
que en la variable donde se guardara el resultado en la posición del bit 24 tendrá que asignase
un 0 ó 1 dependiendo del valor que tenga el arreglo en la posición (0) ya que en esta se
encuentra el MSB , en el otro caso el bit de la posición 0 de la variable corresponde al bit menos
significativo al igual que el arreglo de La posición [24].

por ejemplo

Temporal[25]={MSB,………………………………………..LSB}

Temporal [25]={0,1,2,3,4,5,6,7,8,9……………………….24}

Resultado[25]= 111000000000000000111110

Resultado[25]= bit_24,bit_23,bit_22,bit_21,………………bit_0

Para realizar esto se realizo una operación XOR entre el valor del arreglo y el valor 0x10, para las
diferentes localidades del arreglo. En caso de que operación XOR sea diferente de 0x10 significa
que el arreglo tiene un nivel alto en esa posición, lo cual lleva a asignar un 1 en la variable
resultado.

En el caso que la operación XOR resulte 0x10, significa que el valor en el arreglo corresponde aun
nivel bajo, por lo cual en la variable resultado se asignara un 0.

Como se ve en el siguiente fragmento de código cuando i=0 el arreglo está en la posición temporal
[0] la cual corresponde al bit MSB por lo cual en la posición 23 de la variable resultado se asigna 0
ó 1 correspondiente al bit MSB. -
temp=0x00;

n=23;

for(i=0;i<25;i++){

temp=temporal[i]^0x10;

if(temp!=0x10){

resultado=(1<<n);

}else{

resultado=(0<<n); }
n--;

LCD_ClearDisplay();

LCD_Position(0,4);

LCD_PrintString("valor");

LCD_Position(1,0);

LCD_PrintInt32(resultado);

También podría gustarte