TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: standard en 20 de Febrero de 2007, 12:35:14
-
Saludos
Para realizar mi primer proyecto había pensado en el PIC16f87x, que ha sido del que he encontrado más información, pero seleccionándolo en el MPLAB, aparece en rojo la opción compiler. ¿Necesito otro programa para ensamblar el código?
Gracias
-
Saludos
Para realizar mi primer proyecto había pensado en el PIC16f87x, que ha sido del que he encontrado más información, pero seleccionándolo en el MPLAB, aparece en rojo la opción compiler. ¿Necesito otro programa para ensamblar el código?
Gracias
Si has instalado bien el MPLAB, debieras haber también instalado el MPASM que te permitirá ensamblar el código.
Qué versión usas? Qué mensaje exacto te aparece? Podrías capturar la pantalla y enviarla?
Saludos
-
La versión es la 7.50.
Si sigo el ejemplo del tutorial, con el PIC18F8722, consigo ensamblarlo pero si utilizo el PIC16F877 aparece este error:
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877 "f877tmpo.asm" /l"f877tmpo.lst" /e"f877tmpo.err" /o"f877tmpo.o"
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPLink.exe" "C:\Archivos de programa\Microchip\Proy\16f887.lkr" "C:\Archivos de programa\Microchip\Proy\f877tmpo.o" /o"ilumina.cof" /M"ilumina.map"
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section 'INT_VECTOR' can not fit the absolute section. Section 'INT_VECTOR' start=0x00000004, length=0x00000010
Errors : 1
BUILD FAILED: Tue Feb 20 20:01:24 2007
-
standard algunos comentarios
1) El uso del archivo de linkero .lkr en assembler, solo se usa cuando vas a escribir código en formato "relocatable". Me parece extraño que uses esa forma de codificar si recién empiezas
2) El código de un 16F877 y un 18F8722 pueden llegar a ser muy diferentes ya que ambos poseen un core muy distinto. Uno es de 14 bits (el 16F) y el otro de 16 bits (el 18F).
Podrías explayarte algo más y si es posible subir el código fuente, teniendo en cuenta de usar los marcos [ code ] y [ /code ]
Saludos
-
Saludos
Mirando las directivas en http://www2.ate.uniovi.es/fernando/Doc2005/Documentacion/Directivas%20MPASM.pdf (http://www2.ate.uniovi.es/fernando/Doc2005/Documentacion/Directivas%20MPASM.pdf)
y http://ww1.microchip.com/downloads/en/DeviceDoc/30400g.pdf (http://ww1.microchip.com/downloads/en/DeviceDoc/30400g.pdf) llego a la conclusión de que
Dato11 SET 0x20; Declarar una variable
Cons12 EQU 0x23; Declarar una constante
No tengo claro si EQU reserva una dirección de memoria o si cuando ensambla sustituye la etiqueta por el valor.
Si pongo ésto:
Cons EQU 0x23
Dato11 SET 0x20
Dato12 SET 0x21
Dato13 SET 0x22
Dato14 SET 0x23
Cuando miro en memoria veo que las direciones 20,21 y 22 son las variables y en la 23 está la constante ¿por qué?
¿Por qué pone la constante en la posición 23 de memoria si 23 es su valor?
gracias
-
Saludos
Mirando las directivas en http://www2.ate.uniovi.es/fernando/Doc2005/Documentacion/Directivas%20MPASM.pdf (http://www2.ate.uniovi.es/fernando/Doc2005/Documentacion/Directivas%20MPASM.pdf)
y http://ww1.microchip.com/downloads/en/DeviceDoc/30400g.pdf (http://ww1.microchip.com/downloads/en/DeviceDoc/30400g.pdf) llego a la conclusión de que
Dato11 SET 0x20; Declarar una variable
Cons12 EQU 0x23; Declarar una constante
No tengo claro si EQU reserva una dirección de memoria o si cuando ensambla sustituye la etiqueta por el valor.
No reserva la dirección de memoria. Simplemente sustituye el nombre de la constante por el numero de posicion de memoria asignado a la mísma.
Si pongo ésto:
Cons EQU 0x23
Dato11 SET 0x20
Dato12 SET 0x21
Dato13 SET 0x22
Dato14 SET 0x23
Cuando miro en memoria veo que las direciones 20,21 y 22 son las variables y en la 23 está la constante ¿por qué?
¿Por qué pone la constante en la posición 23 de memoria si 23 es su valor?
gracias
"The set directive is functionally equivalent to the equ directive except that set values may be subsequently altered by other set directives."
Practicamente no hay diferencia.
Saludos.