Domingo 22 de Diciembre de 2024, 02:01
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Instrucciones Para Seleccionar Banco De Memoria
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Instrucciones Para Seleccionar Banco De Memoria (Leído 2002 veces)
xernovil
Miembro activo
Mensajes: 30
Instrucciones Para Seleccionar Banco De Memoria
«
en:
Martes 13 de Marzo de 2007, 17:47 »
0
Buenas, aquí estoy otra vez... con mis dudas, jejejeje, pues bién, tengo este código para un PIC16F873:
Código: Text
bcf STATUS,RP0;
bcf STATUS,RP1
movf param01_rd_flsh,w
bsf STATUS,RP1;
movwf EEADR;
bcf STATUS,RP1;
movf param00_rd_flsh,w
bsf STATUS,RP1;
movwf EEADRH
bsf STATUS, RP1;
bsf STATUS, RP0;
bsf EECON1,EEPGD;
bsf EECON1,RD;
nop
nop
bcf STATUS,RP0
y buscando por internet no me queda claro qué hacen las instrucciones, por ejemplo, según un libro que tengo, al poner [bcf STATUS,RP0] estoy seleccionando el banco 0, no?
Por lo tanto en el código de después, estoy seleccionando el banco 1?
No se bien bien por qué se hace, pero lo veo un poco ambiguo, si selecciono primero un banco, y luego otro, el primero no queda "descartado"?
En fin, en su totalidad el código no lo entiendo muy bien... si alguien con un poco de tiempo y paciencia me lo puede explicar, estaré muy agradecido, mientras seguiré "decodificando" el resto del código que si que entiendo. Lo único que pienso es que se trata de escribir y/o leer en la memoria flash y/o e2prom... espero no estar equivocado en eso...
Gracias por anticipado.
Tweet
Huguen_aus_Tirol
Miembro MUY activo
Mensajes: 318
Re: Instrucciones Para Seleccionar Banco De Memoria
«
Respuesta #1 en:
Martes 13 de Marzo de 2007, 19:37 »
0
Hola!
Bueno, el 873 dispone de 4 bancos de memoria RAM, que debemos seleccionar adecuadamente para tener acceso a los registros que queremos. Esto se logra con los bits RP0 y RP1 del registro STATUS. Y como puedes ver (en el Data Sheet!) este registro está en los cuatro bancos...
Al seleccionar un banco, los otros quedan "no" direccionados, por decirlo de alguna forma.
Esto es así, porque al direccionar de formar directa alguna posición de RAM el "opcode" contiene los 7 bits de menor peso de la dirección, en tanto que los otros 2 bits de mayor peso están contenidos en los bits RPx (2^9 = 512 posiciones RAM) En caso del direccionamiento indirecto, es algo distinto, pero dejémoslo así...
Una mejor explicación encontrarás en la hoja de datos, sección 2.5
Si, en este micro puedes escribir en la flash. En el Data Sheet encontrarás en detalle como se hace...
Espero haber sido más o menos claro!
Saludos
pic-man
Miembro activo
Mensajes: 54
Re: Instrucciones Para Seleccionar Banco De Memoria
«
Respuesta #2 en:
Miércoles 14 de Marzo de 2007, 01:48 »
0
Como ya dijo Huguen_aus_Tirol los 4 bancos de memoria se seleccionan a traves de los bits RP0 y RP1 del registro STATUS de la siguiente manera
Código: Text
RP1 RP0
0 0 BANCO 0
0 1 BANCO 1
1 0 BANCO 2
1 1 BANCO 3
si te fijas en el codigo que pudiste primero ponen en cero (bcf) el bit RP0 y despues ponen en cero el bit RP1, eso no es para nada redundante, lo hacen para asegurarse asi de seleccionar el banco de memoria 0, despues hacen uno (bsf) el bit RP1 y dejan en cero el RP2 con eso seleccionan el banco 2, posteriormente ponen en 1 los dos bits, asi pasan al banco 3
espero no haberme confundido con el orden de los bancos, sigue el consejo de Huguen_aus_Tirol y consulta la hoja de datos del pic
xernovil
Miembro activo
Mensajes: 30
Re: Instrucciones Para Seleccionar Banco De Memoria
«
Respuesta #3 en:
Miércoles 14 de Marzo de 2007, 19:43 »
0
Sí, tenéis razón, yo todavía pensaba en el 16f84 que solo tiene 2 bancos de memoria, y eso me generó la duda. Gracias a los 2
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Instrucciones Para Seleccionar Banco De Memoria