TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado 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
-
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
#rom int8 0xf00000={5,0,0,0,0,0,}
-
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
-
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.
-
Epale Cocu... ya te comentaron como se hace en C... jfmateos2 dijo
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:
-
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!
-
a ver si entendi, quiero guardar 0xAA en la posicion de memoria ROM 0x2100, entonces hago esto en asm:
0xAA org 0x2100
?
?
?
-
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
-
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.
-
en ccs con la directiva #locate
ej:
int8 pepe=0x200;
#locate pepe=direccion_ram_disponible
-
Saludos.
.... Por ejemplo, en un 18f2455 podrías usar esto
#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