TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: hepl2000 en 16 de Febrero de 2010, 21:10:49
-
Estoy haciendo un proyecto con pic micro y la eeprom no me alcanza para meter todos los datos que necesito asi que decidi usar catidades representadas en bits pero como manejarlas ala hora de procesar los datos??
Por ejemplo grabo 3 cantidades en 2 bytes en la eeprom (con 16bits en total) y cuando mi programa los lee dichos bits tienen significados diferentes
por ejemplo
uniendo los 16 bits serian de B0-B15
AHORA
Del bit 0 al bit 5 (6bits) seria un numero del 0-60
del bit 6 al bit 11 (6bits) seria otro numero de 0-45
del bit 12 al bit 15 (4bits) seria un numero de 0-10
total 16 bits 0-15
La dificultad radica en una vez leidos los 2 bytes de la eeprom como los separo para meterlos en 3 variables diferentes tipo byte para que una vez dentro de la variable pueda compararlas, operarlas, sumarles, restarles etc,
Estoy usando PIC basic del pic simulator ide....
Miurge alguna idea ----
-
Mira en este ejemplo:
http://www.todopic.com.ar/foros/index.php?topic=14917.msg242520#msg242520
También de esta otra manera:
Dim v1 as byte
Dim v2 as byte
Dim v3 as byte
Dim d_eeprom as word
V1=0 ‘/Importante inicializar las variables
V2=0
V3=0 ‘*/
V1.0 = d_eeprom.0
V1.1= d_eeprom.1
V2.0= d_eeprom.2
V2.1=d_eeprom.3
‘etc.
-
MMMM fijate que anoche lei tu respuesta y no me parecio que resolvia mi problema, debido a que no explicaste nada solo pusiste los ejemplos, no tienia ni idea de que habias hecho.... pero al dormir, soñar, pensar, se me vino a la cabeza que podia agarrar los bits individuales de la variable de la eeprom y reemplazarlos en la nueva variable tipo byte asi no necesariamente seria nvariable.0=eeprom.0 sino en el orden que yo quisiera: variable.0=eeprom.7 etc. lo probe y decidi entrar nuevamente al foro para ver alguna otra respuesta, y nada, solo la tuya y zaz, se me pararon los pelos de la cabeza al ver que exactamente lo que yo pense es lo que tu me habias ejemplificado, mmm pero como te dije, no explicaste nada y por eso no comprendi tu idea, que esta por demas exelente, pero gracias a Dios tube que resolverlo yo solo... asi jamas se me olvidara, pero gracias amigo, aunque no te haya entendido.. jaja que cosas tiene la vida...
el otro metodo del limk no me gusta pues se lleva demasiados ciclos de procesamiento multiplicar y dividir, es mejor el directo, bit a bit aunque yo lo hice con for next por ejemplo
teniendo esta variable var_eeprom=10111001 quiero tomar los ultimos 6 bits (b2-b7) a la variable nVariable asi que en for next
for x=0 to 5
Nvariable.x=var_eeprom.x+2
next x
-
Si, alguna vez cometemos el error de no explicar lo más basico, sorry.
En mi lenguaje por desgracia, en la expresion var_eeprom.x, no se puede usar la variable x, a la fuerza tiene que ser un numero.
-
Este tambien te vale:
Dim dato_eeprom As Byte
Dim dato_aux As Byte
'/*Se mueven los bit de la variable dato_eeprom dos lugares a la derecha
'los dos huecos de la izquierda se rellenan con ceros y los bit que salen
'por la derecha se pierden. */
dato_aux = ShiftRight(dato_eeprom, 2)