TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: lupini en 23 de Diciembre de 2008, 15:58:30

Título: acceder a los byt de un registro
Publicado por: lupini en 23 de Diciembre de 2008, 15:58:30
saludos genios:
trabajo con pic basic del pic simulator ide
 a ver si alguien me puede ayudar,explicando como se puede acceder a los distintos byt de un registro, a travez de una operacion matematica.
Ej: (que se me ocurre pero no funciona)

dim a as byte
dim habitaciones as byte
a=a+1
habitaciones .a =1

Lo que quisiera hacer en este ej es ir seleccionando los distintos byt del registro habitaciones
como consecuencia de una operacion matematica y setearlos a un estado determinado.
desde ya muchas gracias. :shock:



 
Título: Re: acceder a los byt de un registro
Publicado por: dogflu66 en 23 de Diciembre de 2008, 20:16:40
Eso es una operacion no permitida en este lenguaje pero si puedes hacer esto por ejemplo.

'****Solo simulacion****
Dim habitaciones As Byte
Dim dato As Byte
Dim n As Byte

habitaciones = %10101010

For n = 0 To 7
   dato = ShiftRight(habitaciones, n)
   dato = dato And %00000001
   WaitMs 1
Next n
End   
Título: bien
Publicado por: lupini en 24 de Diciembre de 2008, 01:08:05
muchisimas gracias dogflu66  por tu pronta repuesta.
lo que tu me sugieres es ir obteniendo en "datos" el valor de c/u de los byt de "habitaciones"
y cambiar su estado (o no). Perfectooo!!!!
pero yo necesito al final tener la variable "habitaciones" con los byt que yo quiero cambiar, cambiados de estado pero el resto que permanezcan como estaban.
EJ:
habitaciones = %10101010       quiero alterar el byt 3 y 5 y deberia quedar
habitaciones = %10000010

concretamente esto es para lo siguiente: en un proceso de lectura de pulsadores ,conectados en disposicion matricial, yo cargo en la variable "habitaciones" el estado de los pulsadores "0" al "8"
en los byt "0" al "8" del registro "habitaciones".
Luego en otro proceso de lectura de 8 pulsadores de reset , debo poner a "0" solo el/los byt correespondientes al numero de pulsador de reset que este presionado.
en el ej: anterior estarian pulsados el 3 y el 5.       :lol:  :x)
Título: Re: acceder a los byt de un registro
Publicado por: dogflu66 en 24 de Diciembre de 2008, 14:24:46
habitaciones = habitaciones and reset

Siempre suponiendo que los pulsadores de reset que estan pulsados se lean como cero.
Título: Re: acceder a los byt de un registro
Publicado por: lupini en 24 de Diciembre de 2008, 16:43:32
Nuevamente Gracias lo experimento y luego te comento como me fue.
Pero hoy , y saliendome de lo tecnico, quiero desearte a ti y a todos los pic foreros, una feliz navidad. :D :x) 
Título: Re: acceder a los byt de un registro
Publicado por: lupini en 29 de Diciembre de 2008, 01:12:00
basandome en tus sugerencias resolvi asi:

'****Solo simulacion****
Dim habitaciones As Byte
Dim reset As Byte
Dim dato As Byte
Dim n As Byte
Dim acarreo As Bit
Dim pulreset As Byte  '

habitaciones = %10101010  'pulsadores de habitaciones  oprimidos
 'previamente leidos y guardados en el registro "habitaciones"

dato = habitaciones
pulreset = PORTB  'pulreset es una instantanea del puerto b
'en este se encuentran los pulsadores de reset
n=0

For n = 0 To 7

If pulreset.0 = 1 Then  'si hay pulsador/es de reset oprimidos
dato.0 = 0  'pongo a 0 el bit correspondiente en dato
Endif  '

pulreset = ShiftRight(pulreset, 1)  'muestro en pulreset.0 el
'siguiente bit de pulreset
WaitUs 12

acarreo = dato.0  'guardo el bit0 de dato para despues recuperarlo
dato = ShiftRight(dato, 1)  'desplaza ,1 vez a la derecha los bit de
'dato
WaitUs 12
dato.7 = acarreo  'coloca en dato.7 el valor que tenia dato.0
'antes de la rotacion
Next n

habitaciones=dato

End

escucho sugerencias y/o reformas     

muchas gracias.  :-/