TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: sota_de_bastos en 11 de Octubre de 2007, 05:56:11
-
hola,
¿cómo se pueden definir variables (es decir reservar memoria para una variable: "variable equ 0x20") en una region de la memoria que pueda ser accesible desde cualquier banco?
en el codigo relocalizable se utiliza la instruccion "unbanked_shared" pero en codigo absoluto habrá que utilizar direcciones de memoria concretas, si es que se puede claro.
un saludo. :-/
-
en el codigo relocalizable se utiliza la instruccion "unbanked_shared" pero en codigo absoluto habrá que utilizar direcciones de memoria concretas, si es que se puede claro.
¿Para qué pic?
-
Que tal sota_de_bastos,
Antes que nada bienvenido al foro y aprovechando te invito a que pases al leer las reglas del foro, pero si ya lo hiciste felicidades.
Con respecto a tu pregunta, es necesario como te indica nuestro companiero forero maunix, que nos digas que micro estas usando para asi poder darte la mejor respuesta.
Te puedo adelantar por ejemplo que los microcontroladores de la serie 16, es decir los PIC16FXXX, tienen un campo de 16 bytes para declarar variables comunes y estas pueds ser accesadas desde cualqueir banco. Este campo de 16 bytes cominza en la direccion 70h de la RAM
asi que no importa desde donde la acceses, asi si tu declaras una variable que se llame VAR y la asignas a la direccion 70h o superior, esta la podras accesar desde cualqueir banco.
Saludos y espero haber ayudado.
Elreypic.
-
Te puedo adelantar por ejemplo que los microcontroladores de la serie 16, es decir los PIC16FXXX, tienen un campo de 16 bytes para declarar variables comunes y estas pueds ser accesadas desde cualqueir banco. Este campo de 16 bytes cominza en la direccion 70h de la RAM
En realidad solo algunnos de la gama de los 16F tienen esa posibilidad y no cualquiera, por eso le pregunté para qué pic. 8)
Saludos
-
pues el pic es el 16f873a, y no tiene registros compartidos. Ya lo he preguntado en un foro de microchip y todavía estoy tratando de averiguar qué le pasa al programa que no me compila en codigo relocatable. Voy a ver si me paso a este foro que en español me defiendo mejor que en inglés
un saludo.
-
Que tal sota_de_bastos,
Pues no se entonces que es lo que estas buscando, pero ese microcontrolador, el PIC16F873A, por supuesto qeu tiene registros compartidos y estos comienzan en la direccion 70h de la RAM hasta la direccion 7Fh que son 16 registros que pueen sera accesados desde cualquier pagina. Es decir si tu acesas al registro 70h, es lo mismo que accesaras al registro F0h, al 170h o al 1F0. Esto es lo que se llama registros compartidos, asi que no se entonces que es lo que buscas?
En la pagina 19 del datasheet esta claramente el mapa de memoria donde se muestra esto.
Saludos.
Elreypic.
-
pues esto es lo que tengo yo en el la hoja de datos del micro, y no me aparecen los registros compartidos en ningún sitio (hay dos mapas de memoria el correspondiente al pic16f873a es la de abajo)
saludos!
-
Y no te puedes pasar a PIC18F?? En esos ya no tienen ese problema de los Bancos ni de Paginas.
SALUDOS!!
-
Hola sota_de_bastos, si bien el 16F873A tiene los bancos 0 y 1 accesibles desde los bancos 2 y 3 respectivamente, no tiene posiciones de RAM accesibles desde todos los bancos como el 16F876 o el 16F877
Un saludo.
Atte. CARLOS.
-
ok, gracias, me conformaré con eso (ya que no me puedo cambiar de pic) Tengo otro problemilla con este pic y con el linker script
pero lo voy a poner en otro post ya que es otra cosa
saludos.