Como usar la EEPROM de los PICs

Estado
Cerrado para nuevas respuestas.
Eso hago pero al compilar me sale el error:

Error[149] C:\MPLAB\PIC18F\PRENSA.ASM 1820 : Directive only allowed when generating an object file

Código:
ORG			0xF00000				;Vector de inicio de la EEPROM
	
EEPROM_DAtos code_pack 	

	DE	0x00							;Contador de segundos almacenado en EEPROM
	DE	0x30							;Contador de minutos almacenado en EEPROM
	DE	0x05							;Contador de horas almacenado en EEPROM
	DE	0x12							;Día de mes de inicialización
	DE	0x10							;Mes de inicialización
	DE	0x14							;Año de inicialización

¿Tendrá que ver con que uso la opción de Quickbuild..XX?
 
¿A qué línea corresponde la 1820?

Según la documentación, estás usando una directiva que es incompatible con la generación de código en modo absoluto.

No me gusta lo de mezclar ORG con code_pack. ¿Probaste como te dije?
 
Corresponde a la línea donde coloqué la directiva Etiqueta code_pack 0xF00000
ya probé quitando el ORG y aún así me da error
 
Primero hay que saber si estás construyendo el programa en modo absoluto o relativo.

Como tienes directivas ORG, lo más seguro es que sea absoluto. Vete a las opciones del proyecto, y en la parte de mpasm (opciones globales), fíjate que esté activada la opción "Build in absolute mode".

En cuanto al código, fíjate que puse 0xF00000 después de code_pack, para indicar la dirección de comienzo de los 'de'.
 
Que relajo, he metido los archivos .asm que incluye el programa en un proyecto para poder modificar las "option build", lo curioso es que funcionó al revés; es decir con la opción "Build in absolute mode" desactivada y "generate relocatable code" activada.
He compilado el proyecto y los datos se acomodaron como quería, byte por byte :)

Aquí el código:

Código:
ORG			0xF00000				;Vector de inicio de la EEPROM
	
EEPROM_DAtos code_pack 0xF00000 	

	DE	0x00							;Contador de segundos almacenado en EEPROM
	DE	0x30							;Contador de minutos almacenado en EEPROM
	DE	0x05							;Contador de horas almacenado en EEPROM
	DE	0x12							;Día de mes de inicialización
	DE	0x10							;Mes de inicialización
	DE	0x14							;Año de inicialización

Como siempre, gracias Joaquín por la ayuda
 
Generalmente, no es necesario activar la opción "Construir en modo absoluto", porque la sola presencia de directivas ORG es más que suficiente, ya que esta directiva indica que lo que sigue es una sección absoluta.

code_pack, en cambio, solo funciona en modo reposicionable o relativo, así que si queremos que cierto rango de bytes vayan en una determinada dirección, pues entonces hay que indicar la dirección de comienzo de esa sección a la derecha de la directiva code_pack.
 
Entendido, vaya que fue un dolor de cabeza, desde la mañana andaba tratando de definir bien los bytes, me quedé con la costumbre de que en la serie 16F los DE si s definen por bytes.

:unsure: pero aún quitando la dirección a la derecha de code_pack se compila el código sin problemas, en la guía de usuario que puse en mensajes pasados dice que ese campo es opcional, si se pone, el compilador toma esa dirección para posicionar los datos, si no se coloca, el compilador coloca los datos en la dirección siguiente a la última instrucción que compiló
 
Estado
Cerrado para nuevas respuestas.
Atrás
Arriba