TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: toyo 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!
-
Hace mucho que no toco basic pero esta sintaxis me parece que es válida:
c = b*256 + a
-
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:
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
-
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.
-
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.
-
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! ;-)