Diferencia entre revisiones de «highByte()»

De ArduWiki
Saltar a: navegación, buscar
(Ejemplo 2)
(Vea también)
 
(No se muestran 9 ediciones intermedias del mismo usuario)
Línea 30: Línea 30:
 
   //Descomponer
 
   //Descomponer
 
   int dat1 = 12345;
 
   int dat1 = 12345;
   Serial.prinln(dat1, HEX);    //ox3039
+
   Serial.println(dat1, HEX);    //0x3039
 
   byte val1 = highByte(dat1);  //0x30 (MSB)
 
   byte val1 = highByte(dat1);  //0x30 (MSB)
 
   byte val2 = lowByte(dat1);    //0x39 (LSB)
 
   byte val2 = lowByte(dat1);    //0x39 (LSB)
Línea 39: Línea 39:
 
   dat2 <<= 8;                  //Desplazamos 8 bits a la izquierda
 
   dat2 <<= 8;                  //Desplazamos 8 bits a la izquierda
 
   dat2 |= val2;                //Añadimos LSB
 
   dat2 |= val2;                //Añadimos LSB
   Serial.prinln(dat2, HEX);    //0x3039
+
   Serial.println(dat2, HEX);    //0x3039
 
}
 
}
 
void loop(){
 
void loop(){
Línea 54: Línea 54:
 
   //Descomponer
 
   //Descomponer
 
   long dat1 = 123456789;
 
   long dat1 = 123456789;
   Serial.print(dat1, HEX);
+
   Serial.println(dat1, HEX);
 
   byte val[4];
 
   byte val[4];
 
   for (byte i=0; i<4; i++) {
 
   for (byte i=0; i<4; i++) {
 
       val[i] = lowByte(dat1);
 
       val[i] = lowByte(dat1);
 
       Serial.println(val[i], HEX);
 
       Serial.println(val[i], HEX);
       //desplazar aqui
+
       dat1 >>= 8;  //desplazar aqui
 
   }
 
   }
 
   Serial.println("-------");
 
   Serial.println("-------");
 
   //Reconstruir
 
   //Reconstruir
 
   long dat2;
 
   long dat2;
   for (byte n=3; n>=0; n--) {
+
   for (byte i=0; i<4; i++) {
 +
      dat2 |= val[3-i]; //Meter en LSB
 +
      if (i  3){ //Menor que 3
 +
          dat2 <<= 8;    //desplazar aqui
 +
      }
 
   }
 
   }
 
   Serial.println(dat2);
 
   Serial.println(dat2);
Línea 76: Línea 80:
  
 
== Vea también ==
 
== Vea también ==
* [[bit()]]
+
<categorytree mode=all>Funciones bit y byte</categorytree>
* [[bitClear()]]
+
<categorytree mode=all>Operador bit a bit</categorytree>
* [[bitRead()]]
 
* [[bitSet()]]
 
* [[bitWrite()]]
 
* [[bitshift left]] - (<nowiki><<</nowiki>)
 
* [[bitshift right]] - (<nowiki>>></nowiki>)
 
* [[lowByte()]]
 
* [[shiftIn()]]
 
* [[shiftOut()]]
 
* [[or bit a bit compuesto]] <nowiki>(|=)</nowiki>
 
* [[and bit a bit compuesto]] <nowiki>(&=)</nowiki>
 
  
== Referencias ==
+
== Referencias externas ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/millis/ Guia de referencia de Arduino]
  
[[Category:Funciones]]
+
[[Category:Funciones bit y byte]]

Revisión actual del 17:40 14 jul 2019

Descripción

Extrae el byte de orden superior (MSB) en int o el segundo byte más bajo de un tipo de datos más grande como long.

Sintaxis

highByte(variable);

Parámetros

variable
variable a evaluar que deberá ser int, long, float, unsigned int o unsigned long

Retornos

Retorna byte mas significativo.

Advertencias

Cuidado al trabajar con tipo long que es de 4 bytes, porque highByte() se refiere al que esta a la izquierda del LSB y no se refiere al MSB.

long val = 0x11223344;
highByte(val);       //33
lowByte(val);        //44 (LSB)

Ejemplo 1

Descomponer en bytes y reconstruir un int.

void setup(){
   Serial.begin(9600);
   //Descomponer
   int dat1 = 12345;
   Serial.println(dat1, HEX);     //0x3039
   byte val1 = highByte(dat1);   //0x30 (MSB)
   byte val2 = lowByte(dat1);    //0x39 (LSB)
   Serial.println("-------");
   //Reconstruir
   int dat2;
   dat2 = val1;                  //Tomamos MSB
   dat2 <<= 8;                   //Desplazamos 8 bits a la izquierda
   dat2 |= val2;                 //Añadimos LSB
   Serial.println(dat2, HEX);     //0x3039
}
void loop(){
   //Nada
}

Ejemplo 2

Descomponer en bytes y reconstruir un long.

void setup(){
   Serial.begin(9600);
   //Descomponer
   long dat1 = 123456789;
   Serial.println(dat1, HEX);
   byte val[4];
   for (byte i=0; i<4; i++) {
      val[i] = lowByte(dat1);
      Serial.println(val[i], HEX);
      dat1 >>= 8;   //desplazar aqui
   }
   Serial.println("-------");
   //Reconstruir
   long dat2;
   for (byte i=0; i<4; i++) {
      dat2 |= val[3-i];  //Meter en LSB
      if (i  3){  //Menor que 3
          dat2 <<= 8;     //desplazar aqui
      }
   }
   Serial.println(dat2);
}

void loop(){
   //Nada
}
********* Ejemplo incompleto no permite *******

Vea también


Referencias externas