Autor Tema: declarar datos inicializados en RAM  (Leído 2525 veces)

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

Desconectado norak

  • PIC10
  • *
  • Mensajes: 33
declarar datos inicializados en RAM
« 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

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: declarar datos inicializados en RAM
« Respuesta #1 en: 04 de Febrero de 2010, 05:41:42 »
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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado norak

  • PIC10
  • *
  • Mensajes: 33
Re: declarar datos inicializados en RAM
« Respuesta #2 en: 04 de Febrero de 2010, 06:14:15 »
Me refiero a memoria RAM (de datos)

para poder luego modificar esas posiciones en tiempo de ejecucion del programa.


Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: declarar datos inicializados en RAM
« Respuesta #3 en: 04 de Febrero de 2010, 10:23:06 »
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

Desconectado norak

  • PIC10
  • *
  • Mensajes: 33
Re: declarar datos inicializados en RAM
« Respuesta #4 en: 04 de Febrero de 2010, 11:43:14 »


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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: declarar datos inicializados en RAM
« Respuesta #5 en: 04 de Febrero de 2010, 14:45:37 »
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

Desconectado norak

  • PIC10
  • *
  • Mensajes: 33
Re: declarar datos inicializados en RAM
« Respuesta #6 en: 05 de Febrero de 2010, 04:23:59 »

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

Desconectado JBQ

  • PIC16
  • ***
  • Mensajes: 118
Re: declarar datos inicializados en RAM
« Respuesta #7 en: 08 de Febrero de 2010, 18:37:05 »
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?


 

anything