Cómo almacenar, modificar y reenviar 4 bytes de datos desde un ensamblado codificado dspic a eso en un pic18f basado en compilador c

0

Estoy usando el compilador Xc8 y pic18f.Im comunicándome con un dspic30f; codificado en ensamblador y recibiendo una variable de 4 bytes a través de i2c.

  

Tarea: Tengo que recibir el almacén de paquetes de 4 bytes, modificarlo y enviarlo   De vuelta al controlador dspic. Ya que estoy usando el compilador xc8, confío en que   puede almacenar el paquete como flotante solo que consume 3 o 4 bytes de   espacio. Pero el compilador convierte los 3-4 bytes en IEEE flotante   Formato del cual solo tengo una comprensión limitada.

     

Por ejemplo: si dspic envía un valor de 4 bytes 0x0001ffff y espera que la foto 18f sea   Modificar y enviar el valor como 0x001f00ff. Como el pic18 utiliza el compilador xc8, confío   la única forma es almacenar los 4 bytes como flotante. Pero no tengo idea de cómo   para reenviar el valor flotante modificado al formato hexadecimal deseado?

Apreciaría cualquier aportación o sugerencia valiosa. Mientras tanto, intentaré comprender el formato flotante en compiladores C. Cualquier alternativa que pueda hacer que esto suceda será profundamente apreciada.

Gracias por tu tiempo.

Saludos

Rookie91

    
pregunta Rookie91

1 respuesta

3

Float definitivamente no es la forma de hacerlo. No estoy seguro de qué matemáticas necesita hacer en el valor recibido, su ejemplo parece implicar simplemente intercambiar dos bytes. Si ese es el caso, simplemente reciba el valor en una matriz de 4 bytes (unsigned char val_array [4]) e intercambie los bytes. Si necesita hacer cálculos complejos en el valor, entonces almacenarlo como un largo sería mejor.

    
respondido por el Steve G

Lea otras preguntas en las etiquetas