Autor Tema: acceder a los byt de un registro  (Leído 2661 veces)

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

Desconectado lupini

  • PIC10
  • *
  • Mensajes: 6
acceder a los byt de un registro
« 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:



 

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: acceder a los byt de un registro
« Respuesta #1 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   
Saludos desde Granada, España.

Desconectado lupini

  • PIC10
  • *
  • Mensajes: 6
bien
« Respuesta #2 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)
« Última modificación: 24 de Diciembre de 2008, 01:33:04 por lupini »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: acceder a los byt de un registro
« Respuesta #3 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.
Saludos desde Granada, España.

Desconectado lupini

  • PIC10
  • *
  • Mensajes: 6
Re: acceder a los byt de un registro
« Respuesta #4 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) 

Desconectado lupini

  • PIC10
  • *
  • Mensajes: 6
Re: acceder a los byt de un registro
« Respuesta #5 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.  :-/     

                                   
« Última modificación: 29 de Diciembre de 2008, 01:45:48 por lupini »


 

anything