Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

12/10/2014 #41

Avatar de Daniel Meza

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?
12/10/2014 #42

Avatar de JoaquinFerrero

¿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?
12/10/2014 #43

Avatar de Daniel Meza

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
12/10/2014 #44

Avatar de JoaquinFerrero

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'.
12/10/2014 #45

Avatar de Daniel Meza

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
12/10/2014 #46

Avatar de JoaquinFerrero

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.
12/10/2014 #47

Avatar de Daniel Meza

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.

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ó
Tema Cerrado
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.