Manejar mejor MPLAB X

Hola:

Probando el MPLAB X 1.60 otra vez, ya que llevo un año sin tocarlo.

Creo un proyecto y se me cre una carpeta con mucho subdirectorios y archivos.

Tengo archivos .asm, .inc en ensamblador. No se ni donde ponerlo exactamente ya que ponga donde lo ponga me sale error.

Código:
;
;                                EJEMPLO 3-12
;                        Autor: Mikel Etxebarria
;                        Orozko-Bizkaia, Julio 2010
;
;El manejo de la pantalla LCD, más mensajes todavía.
;
;Este ejemplo pretende introducirnos en el manejo de la pantalla LCD, para la visualización
;de diferentes mensajes.
;
        List    p=16F886            ;Tipo de procesador
        include    "P16F886.INC"        ;Definiciones de registros internos
        #define Fosc 4000000        ;Velocidad de trabajo

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

        __config    _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF&_BOR_OFF     ;Palabra 1 de configuración
        __config    _CONFIG2, _WRT_OFF                                    ;Palabra 2 de configuración
                         
Temporal_1    equ    0x20        ;Variable temporal
Temporal_2    equ    0x21        ;Variable temporal
Lcd_var        equ    0x70        ;Variables (3) empleadas por las rutinas de manejo del LCD
MSE_Delay_V    equ    0x73        ;Variables (3) empleadas por las macros de temporización

            org    0x00        ;Vector de RESET    
            goto    Inicio
            org    0x05

;******************************************************************************************
;Según el valor contenido en el registro W, se devuelve el carácter a visualizar

Tabla_Mensajes    movwf    PCL        ;Calcula el desplazamiento sobre la tabla

;***********************************************************************************
;La directiva DT genera tantas intsrucciones RETLW como bytes o caracteres contenga

Mens_0            equ    $        ;Mens_0 apunta al primer carácter del mensaje 0
                dt    "Hola",0x00

Mens_1            equ    $        ;Mens_1 apunta al primer carácter del mensaje 1
                dt    "Foros de elec.",0x00

Mens_2            equ    $        ;Mens_2 apunta al primer carácter del mensaje 2
                dt    "Bueno.",0x00

Mens_3            equ    $        ;Mens_3 apunta al primer carácter del mensaje 3
                dt    "Hasta otra",0x00

            include    "LCD4bitsPIC16.inc"        ;Incluye las rutinas de manejo del LCD
            include    "MSE_Delay.inc"            ;Incluir rutinas de temporización

;*************************************************************************************
;Mensaje: Esta rutina envía a la pantalla LCD el mensaje cuyo inicio está  indicado en
;el acumulador. El fin de un mensaje se determina mediante el código 0x00

Mensaje            movwf      Temporal_1         ;Salva posición de la tabla
Mensaje_1          movf       Temporal_1,W       ;Recupera posición de la tabla
                   call       Tabla_Mensajes     ;Busca caracter de salida
                   movwf      Temporal_2         ;Guarda el caracter
                movf       Temporal_2,F
                btfss      STATUS,Z           ;Mira si es el último
                goto       Mensaje_2
                return
Mensaje_2       call    LCD_DATO           ;Visualiza en el LCD
                incf    Temporal_1,F       ;Siguiente caracter
                goto    Mensaje_1

;Programa principal
Inicio               clrf     PORTB                
                clrf    PORTA            ;Borra los latch de salida
                bsf        STATUS,RP0
                bsf        STATUS,RP1        ;Banco 3
                clrf    ANSEL            ;Puerta A digital
                clrf    ANSELH            ;Puerta B digital
                bcf        STATUS,RP1        ;Banco 1
                movlw    b'11110001'
                movwf    TRISA            ;RA1-RA3 salidas
                movlw    0xf0
                movwf    TRISB            ;RB0-RB3 salidas
                bcf        STATUS,RP0        ;Banco 0

                call    UP_LCD            ;Configura puertos para LCD        
                call    LCD_INI            ;Secuencia de inicio del LCD
                movlw    b'00001100'
                call    LCD_REG            ;Envía instrucción: LCD ON, Cursor OFF y blink OFF

Loop            movlw    b'00000001'
                call    LCD_REG            ;Borra LCD y Home (colocar cursor en 1ª posición)
                movlw    Mens_0
                call    Mensaje            ;Visualiza el mensaje 0
                movlw    b'11000101'
                call    LCD_REG            ;Coloca cursor en 2ª fila del LCD
                movlw    Mens_1
                call    Mensaje            ;Visualiza mensaje 1
                Delay     1000 Milis        ;Temporiza 1 seg.
                movlw    b'00000001'
                call    LCD_REG            ;Borra LCD y Home (colocar cursor en 1ª posición)
                movlw    Mens_2
                call    Mensaje            ;Visualiza el mensaje 2
                movlw    b'11000000'
                call    LCD_REG            ;Coloca cursor en 2ª fila del LCD
                movlw    Mens_3
                call    Mensaje            ;Visualiza el mensaje 3
                Delay     1000 Milis        ;Temporiza 1 seg.
                goto    Loop

                end                        ;Fin del programa fuente
ERROR:
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/Users/Meta/MPLABXProjects/Prueba_01.X'
make -f nbproject/Makefile-default.mk dist/default/production/Prueba_01.X.production.hex
make[2]: Entering directory `C:/Users/Meta/MPLABXProjects/Prueba_01.X'
"C:\Program Files (x86)\Microchip\MPLABX\mpasmx\mpasmx.exe" -q -p16f886 -l"build/default/production/build/default/debug/Ejemplo 3-12.lst" -e"build/default/production/build/default/debug/Ejemplo 3-12.err" -o"build/default/production/build/default/debug/Ejemplo 3-12.o" "build/default/debug/Ejemplo 3-12.asm"
Error[151] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 38 : Operand contains unresolvable labels or is too complex
Error[151] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 41 : Operand contains unresolvable labels or is too complex
Error[151] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 44 : Operand contains unresolvable labels or is too complex
Error[151] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 47 : Operand contains unresolvable labels or is too complex
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 53 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 55 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 56 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 58 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 67 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 70 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 92 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\LCD4BITSPIC16.INC 94 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 74 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 75 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 78 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] BUILD\DEFAULT\DEBUG\EJEMPLO 3-12.ASM 80 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[311] BUILD\DEFAULT\DEBUG\MSE_DELAY.INC 40 : Operand of HIGH operator was larger than H'FFFF'.
Message[311] BUILD\DEFAULT\DEBUG\MSE_DELAY.INC 40 : Operand of HIGH operator was larger than H'FFFF'.
make[2]: *** [build/default/production/build/default/debug/Ejemplo 3-12.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

make[2]: Leaving directory `C:/Users/Meta/MPLABXProjects/Prueba_01.X'
make[1]: Leaving directory `C:/Users/Meta/MPLABXProjects/Prueba_01.X'

BUILD FAILED (exit value 2, total time: 2s)
Un ejemplo:
 
Hola :
Actualmente el MPLABX lo estoy usando para programar en C, dejando el resto de compiladores a un lado.

La configuraciòn para ASM es sencilla:

1. Creas un nuevo proyecto vacio "Stand Alone project", ya que el resto de plantillas son para lenguaje C.
2. En el asistente de proyectos, en el paso 6. seleccionas el compilador el cual es "mpasm". Y activas el proyecto en el paso 7, opcion "Set as main project".

3. Como indicas, se crean varias carpetas "virtuales" y la que nos intereza es la que dice "Source Files"; es en esta carpeta donde vas a lojar todos los archivos que tengas para la aplicaciòn.

4. Agregamos el un archivo, hay dos maneras:
La primera es agregando un archivo existente. Clic derecho sobre "Source files" y la opciòn "Add existing item".

1.jpg

La segunda es agregando un nuevo archivo; clic derecho en "Source files" y la opciòn "New" > "Other" para la primera vez; apaece una opciones de las cuales seleccionas asm. Luego ya aparece la opciòn "AssemblyFile.asm".

5. Como un ejemplo de prueba puse este còdigo y compila normalmente.

Código:
#include <P16F876A.inc>

org 0x00
clrf PORTA

end

BUILD SUCCESSFUL (total time: 1s)

saludos
 
Hola:

Lo he hecho tal como dices. Me sigue dando error como el de arriba, jejejeje.

Otra cosa.
lcd-551890.gif


¿Cuál es el indicado?
 
Generalmente lo dejo en "Auto", hace que el compilador administre automàticamente los archivos.
Si usas absoluto, te aseguras que todos los archivos esten en la misma carpeta de aplicaciòn o delproyecto.
 
Una pregunta, ando con un problema usando el MPLAB X, estaba con un proyecto de prueba para un PIC12F675, bueno, ya lo hice funcionar, pero la cosa es que usaba un #include <Config.h> que no se de donde salio, el compilador me dice que no encuentra el archivo pero si le paso encima con la tecla Ctrl presionada me da la dirección bien y el código no muestra errores por las definiciones que solo estaban escritas dentro de Config.h, el MPLAB debió generarlo en algún momento por el formato que tiene, no se por que no se incluye en la compilación.
 
Atrás
Arriba