TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: cocu3 en 01 de Febrero de 2008, 13:19:46

Título: como programo la memoria de datos?
Publicado por: cocu3 en 01 de Febrero de 2008, 13:19:46
buen dia, quisiera saber como se prgrama la memoria de datos de los pics, osea como seria la estructura del codico en asemmbler o en ccs :shock:

saluds
Título: Re: como programo la memoria de datos?
Publicado por: jfmateos2 en 01 de Febrero de 2008, 19:04:46
Hola cocu, en assembler no me atrevo a aconsejarte, pero en CCS C tienes que usar la directiva #ROM. Por ejemplo, en un 18f2455 podrías usar esto
Código: [Seleccionar]
#rom int8 0xf00000={5,0,0,0,0,0,}
Título: Re: como programo la memoria de datos?
Publicado por: cocu3 en 04 de Febrero de 2008, 18:58:16
perdona la ignorancia, con esa linea de codigo lo q estas haciendo es asignar los valores 5,0,0,0,0,0 a seis posiciones de la memoria ubicada en la direccion f00000??? :shock:

saluds
Título: Re: como programo la memoria de datos?
Publicado por: jfmateos2 en 04 de Febrero de 2008, 19:23:15
Así es cocu, en el 18f2455 la memoria eeprom de datos empieza en la dirección f00000, y lo que hago es guardar el entero 5 en la primera posición, el entero 0 en la posición siguiente y así sucesivamente.

En el caso del 18F ese int8 es importante, pues sino, se asume que quieres guardar un int16, que ocupará dos posiciones consecutivas.
Título: Re: como programo la memoria de datos?
Publicado por: firepic en 22 de Febrero de 2008, 18:51:02
Epale Cocu... ya te comentaron como se hace en C... jfmateos2 dijo
Citar
en assembler no me atrevo a aconsejarte
yo si me atrevo jejeje... bueno es que trabajé mucho tiempo en assembler antes de pasarme a CCS.. en assembler no más tienes que colocar: "nombre_de_la_variable" equ posición_de_memoria (recuerda que si usas mplab debes colocar 0x delante o h al final del número para indicar que es hexadecimal).
No importa en qué banco esté la variable, lo defines y listo... pero cuando vayas a escribir o leer de esa variable recuerda cambiarte de banco, si no es el 0!

Por ejemplo:
variable_1 equ 20h
variable_2 equ 21h
        .
        .
        .
variable_11 equ 2Ah
variable_12 equ 2Bh
Variable_xx equ 0A0h

etc, etc,etc.... sencillo verdad? Bueno supongo ya lo sabías, pero queda este mensaje por allí por si a alguien se le presenta el mismo problema...  :mrgreen:
Título: Re: como programo la memoria de datos?
Publicado por: firepic en 22 de Febrero de 2008, 20:44:22
Ah que burrada tan grande la mía... no leí lo anterior... la referencia era a la memoria Rom, no Ram...
Muy interesante la forma en que lo haces... yo lo haría con los códigos para escribir en la Rom que sugieren las datasheets... pero parece que tu forma es mejor... gracias! y disculpa!
Título: Re: como programo la memoria de datos?
Publicado por: cocu3 en 22 de Febrero de 2008, 22:11:50
a ver si entendi, quiero guardar 0xAA en la posicion de memoria ROM 0x2100, entonces hago esto en asm:

0xAA org 0x2100


?
?
?
Título: Re: como programo la memoria de datos?
Publicado por: amrres en 28 de Mayo de 2008, 04:12:10
Hola, alguien me podria decir como se haria en C18?
Os cuento, me estoy iniciando en el mundo de los PIC y necesito adquirir un voltaje analogico y guardarlo en la memoria EEprom de datos (estoy trabajando con un 18f2550)
Lo de la conversion A/D mas o menos lo tengo claro, pero almacenar el dato no.

Gracias y saludos
Título: Re: como programo la memoria de datos?
Publicado por: BrunoF en 28 de Mayo de 2008, 04:42:03
a ver si entendi, quiero guardar 0xAA en la posicion de memoria ROM 0x2100, entonces hago esto en asm:

0xAA org 0x2100


?
?
?

No. Harías:
     org 0x2100
     0xAA,....,....

Y en C18...ni idea! :D Alguno ya te ayudará.

Saludos.
Título: Re: como programo la memoria de datos?
Publicado por: PalitroqueZ en 29 de Mayo de 2008, 19:12:37
en ccs con la directiva #locate

ej:

int8 pepe=0x200;
#locate pepe=direccion_ram_disponible

Título: Re: como programo la memoria de datos?
Publicado por: MLO__ en 30 de Mayo de 2008, 23:36:16
Saludos.

.... Por ejemplo, en un 18f2455 podrías usar esto
Código: [Seleccionar]
#rom int8 0xf00000={5,0,0,0,0,0,}

He visto en varios ejemplos del CCS la manera de programar la ROM con los valores que uno quiera, mi pregunta es: el numerito 0xf00000 es el mismo para todos los pic18??? hay unos ejemplos en los que inicia en otro numero, y en el pic 16 es diferente tambien. Como se donde inicia la ROM ??? Revise la datasheet pero no vi la info ( claro que la he pasdado medio de volado  :-) )

Saludos