Autor Tema: Dudas acerca de datos en bancos  (Leído 1526 veces)

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

Desconectado eddie323983

  • PIC10
  • *
  • Mensajes: 12
Dudas acerca de datos en bancos
« en: 12 de Octubre de 2004, 07:00:00 »
Muy buenas:

Este es mi primer mensaje en el foro aunque si que he investigado un poco por él y no he encontrado respuesta a mi duda.

El caso es que estoy utilizando el pic 16f874a y quisiera saber si puedo guardar un dato en un registro de forma de que sea accesible tanto si estoy en el banco 1 como si estoy en el banco 0 o bien no me queda más remedio que pasar el dato del registro (estando naturalmente en el banco correspondiente) al registro W, moverme de registro y así poder utilizar dicho dato con el consiguiente desperdicio de líneas de código y tiempo de funcionamiento.

Muchas gracias por su tiempo.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Dudas acerca de datos en bancos
« Respuesta #1 en: 12 de Octubre de 2004, 07:13:00 »
Algunos registros de uso general pueden ser accedidos desde diferentes bancos, pero no creo que una posicion de memoria ram se pueda acceder desde un banco diferente a el.

Desperdicio de lineas? Pues a veces hay que asumirlas... no creo que sea demasiado desperdicio un MOVF direccion W  ,  BCF  banco , MOVWF direccion. Son 3-4 ciclos de reloj, que aun asi, dependiendo de la aplicacion, pueden ser cruciales.

No se pueden evitar semejantes embarazosas situaciones, debido a la no-linealidad de la RAM del PIC. A no ser que uses un registro de uso general (como PORTA o TRISA o quien sabe, pero menuda chapuza) , o usar los PIC18, cuya memoria es completamente lineal.

salu2

Desconectado PWRINVITRO

  • PIC12
  • **
  • Mensajes: 78
RE: Dudas acerca de datos en bancos
« Respuesta #2 en: 14 de Octubre de 2004, 18:09:00 »
Saludos!!!!... bueno mira los registros especiales del micro a los q puedes acceder desde cualkier banco es porq estos registros estan mapeados en dichos bancos y cada ves q escribes en uno de ellos la informacion es duplicada y pasada todos los bancos donde este registro se encuentre.. lamentablemente esto no lo puedes hacer tu como programador... la solucion q te puedo ofrecer es q si estas en el banco 1 y necesitas acceder a un registro q se encuentra en el banco cero... no tienes q cambierte de banco.... solo ejecutas estas instrucciones a continuacion y listo



  ;  ESTAS EN EL BANCO 1

              MOVLW            0FFH
              BANKSEL          REGISTRO;CAMBIO DE BANCO
              MOVWF             REGISTRO;REGISTRO ESTA EN BANCO 0
 .....                                ;VUELVE SOLO AL BANCO UNO
......
......
.....
LA INSTRUCCION BANKSEL(SELECCION DE BANCO) TE PERMITE CAMBIARTE AUTOAMTICAMENTE DE BANCO Y SE DIRIGE AL BANCO DONDE SE ENCUANTRA EL REGISTRO Q KIERES ACCESAR NO IMPORTA DONDE ESTES Y NO IMPORTA DONDE ESTE LUEGO DE EJECUTAR LA OPERACION DE LECTURA O ESCRITURA CONTINUAS TRABAJNADO EN EL BANCO EN EL Q ESTABAS!!!....  ESPERO TE AYUDE!!...


 

anything