TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: norak en 04 de Febrero de 2010, 05:29:53
-
Hola,
Alguien sabe como declarar datos inicializados en una localización específica de la memoria RAM?
Algo parecido a la directiva CBLOCK pero que se pueda inicializar las etiquetas
CBLOCK 0x100
ETIQUETA:3
ENDC
Tal vez sirva la directiva IDATA ¿?
IDATA 0x100
ETIQUETA DB 'HOLA'
El manual de ensamblador de uCHIP indica que esta directiva es para codigo relocatable,
y mi código es absolute, existe algún problema ¿?
muchas gracias
-
Hola. RAM o ROM?
Si te estas refiriendo a memoria de programa(ROM, y probablemente FLASH) con codigo absoluto podes usar la directiva ORG.
Saludos.
-
Me refiero a memoria RAM (de datos)
para poder luego modificar esas posiciones en tiempo de ejecucion del programa.
-
no se si te entiendo, quieres cambiar la ubicacion de una variale durante el prog, eso es una direccion que se le da al compilador para que genere el codigo, pero utilizando el fsr en indf puedes apuntar distintas posiciones de la ram. por si te sirve creo se le llama direccionamiento indirecto
un saludo
PD se puede pero reescribiendo sobre la eeprom que es mas complicado
-
Lo que quiero es cambiar el contenido de una variable previamente inicializada en la RAM
Efectivamente con el direcionamiento indirecto que comentas puedo acceder a esa locaclización y variar su contenido.
pero repito, mi duda es si se puede inicializar la variable.
/*
lo que me gustaria hacer, sería algo como esto:
CBLOCK 0x100
ETIQUETA DB 'HOLA'
ENDC
*/
Es posible hacerlo de alguna forma ?
gracias
-
ahí me has pillao, con la directiva CBLOCK lo que haces es darle un nombre para que el compilador sepa a que direccion te refieres, no escribe datos en las posiciones
cblock 0x100
etiqueta
endc
es lo mismo que etiquta equ 0x100
por lo que, movf etiqueta,w
seria lo mismo que movf 0x100,w
a que te refieres con inicializar??
si lo que quieres es escribir en esas posiciones de ram algun valor, al "inicializar" el programa, haz que lo cargue
movlw H
movwf 0x100 ó etiqueta
movlw O
movwf etiqueta+1
pero normalmente si son datos fijos como mensajes de lcd se suelen hacer tablas para leer en la memoria de programa utilizando DB, DT o muchos retlw
un saludo
-
Creo que tienes razón,
no se pueden inicializar datos en la RAM al grabar el PIC,
supongo que se puede reservar esa zona, pero hay que inicializarla luego al ejecutarse el programa.
No van a ser datos fijos (si no que se van a modificar) por eso no los implementé con una tabla...
gracias por la ayuda
-
Hola a todos, respecto a lo que propone norak al inicio del tema, como se haria eso en codigo relocatable? hay alguien al que le haya salido?