Autor Tema: como juntar 2 bytes para crear un word?  (Leído 8839 veces)

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

Desconectado toyo

  • PIC10
  • *
  • Mensajes: 6
como juntar 2 bytes para crear un word?
« en: 20 de Noviembre de 2010, 15:11:07 »
Hola, llevo mucho tiempo sin programar pic's y soy un poco novato pero en fin, he vuelto a la carga con el mikrobasic.
Mi duda es que necesito convertir 2 variables tipo byte en una variable word. De manera que una corresponda a los 8 bits más bajos y la otra a los 8 más altos. Es decir:
dim a, b as byte
dim c as word
a = $F1     'bits bajos
b = $A5    'bits altos
'y por lo tanto, deseo que:
c = $A5F1

Se me ocurren algunas formas de lograrlo, pero todas me obligan a trabajar una parte bit a bit. Y creo que debe de haber alguna instrucción o forma más simplificada de lograrlo.
Gracias a tod@s por la ayuda!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: como juntar 2 bytes para crear un word?
« Respuesta #1 en: 20 de Noviembre de 2010, 17:22:46 »
Hace mucho que no toco basic pero esta sintaxis me parece que es válida:

c = b*256 + a

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: como juntar 2 bytes para crear un word?
« Respuesta #2 en: 20 de Noviembre de 2010, 18:05:09 »
Hace mucho que no toco basic pero esta sintaxis me parece que es válida:

c = b*256 + a

Esta es una forma válida pero genera demasiado código basura y no es recomendable, MikroBasic trae instrucciones propias para realizar esto pero lo primero que debes hacer es incluir la librería built_in.h en la cabezera del programa.

Luego puedes utilizar las funciones Lo, Hi, Higher, Highest.

La función Lo se encarga de manejar el byte menos significativo de una variable tipo word, integer, longword, longint o float.
La función Hi se engarga de manejar segundo byte de una variable tipo word, integer, longword, longint o float.
La función Higher se engarga de manejar tercer byte de una variable tipo word, integer, longword, longint o float.
La función Highest se engarga de manejar byte más significativo de una variable tipo word, integer, longword, longint o float.

Así para lo que deseas hacer debes utilizar lo siguiente:
Código: [Seleccionar]
include <built_in.h>

dim a, b as byte
dim c as word
a = $F1    'bits bajos
b = $A5    'bits altos
'y por lo tanto, para guardar ambos bytes en c debes hacer lo siguiente:
Lo(c) = a  'guardas el byte a en el byte 1 de c
Hi(c) = b  'guarda el byte b en el byte 2 de c
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: como juntar 2 bytes para crear un word?
« Respuesta #3 en: 22 de Noviembre de 2010, 16:53:38 »
No sé muy bien en Microbasic, pero en PBP si se crea una variable de 16 bits, automáticamente el compilador asigna Bytes altos y bajos:

X var word

X.LowByte=$12
X.HighByte=$45

Quizá Microbasic también lo haga.
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: como juntar 2 bytes para crear un word?
« Respuesta #4 en: 24 de Noviembre de 2010, 06:52:08 »
Hola buenos dias , llegue un poco tarde ya las respuesta las dieron los colegas mario y bigluis; de esa manera yo separo un word y tambien junto 2 byte para formar un word usando LO y HI pero en tal caso revisa las intrucciones del compilador que estas usando no deberias tener mayores problemas.

Saludos.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado toyo

  • PIC10
  • *
  • Mensajes: 6
Re: como juntar 2 bytes para crear un word?
« Respuesta #5 en: 25 de Noviembre de 2010, 12:48:31 »
Hola a todos. Disculpen por mi tardanza en contestar, pero hasta ahora no he tenido ni la oportunidad de probar vuestras soluciones. Anteriormente ya había probado con Lo(c) = a , pero no me acordé de incluir la librería. por lo que no me funcionó. Ahora lo he probado nuevamente con la librería y ya funciona perfectamente! y es que con las librerías aún me lío un poco. Muchas gracias a todos por vuestra ayuda, de verdad! ;-)


 

anything