error mplab: el código ejecutable y los datos deben definirse en una sección apropiada

1

Soy un principiante en la programación de Mplab y microController. Sigo un libro de imágenes. Básicamente, mi programa es un programa de encendido y apagado de led. Estoy usando mplabx-v2.10 . Este no es mi código completo. Sin embargo, el error viene de la línea

BSF STATUS, 5

mi código

STATUS EQU 03H
TRISA EQU 85H
PORTA EQU 05H

    BSF STATUS, 5

    END

el error es

Error[152]   C:\USERS\MADHAWAX\MPLABXPROJECTS\P-STAR1.X\NEWASMTEMPLATE1.ASM 6 : Executable code and data must be defined in an appropriate section

una instantánea del error

    
pregunta Fast Snail

1 respuesta

2

Es necesario separar los datos y el código con las palabras clave adecuadas. Entonces, por ejemplo, comienzas con alguna declaración del tipo de PIC y cualquier archivo incluido:

; beginning of source
list    p=16F684
#include <p16F684.inc>

A continuación, puede declarar variables en una sección de datos (esto es solo un ejemplo genérico):

    ; declaring variables
GENVAR  UDATA           ; general variables
myvar1  res 1       ; one byte
myvar2  res 2       ; two bytes

Normalmente, luego inicia la sección de código, usando la palabra clave CODE , y agrega un goto desde el vector de reinicio (donde el procesador comienza a ejecutarse):

    ; start of code (reset vector)
RESET   CODE    0x0000      ; processor reset vector
    goto    start

Luego, declara cualquier otra sección de CÓDIGO, por ejemplo:

    ; main program
MAIN    CODE

start
    ; e.g. configure ports
    banksel TRISA       ; configure PORTA as all o/p
    clrf    TRISA

    ; main loop
main_loop
    ; do stuff
    ;    "

    ; repeat forever
    goto    main_loop

    ; mandatory terminator
    END

Creo que tu problema es que has comenzado a escribir código sin declarar una sección CODE .

EDIT Simplemente arreglando tu código agregando la palabra clave CODE y el salto inicial desde el vector de restablecimiento que se compila bien:

También debe asegurarse de respetar las sangrías / espacios iniciales necesarios en las líneas de código para que no se confundan con las etiquetas. Su primer bloque de código (en MAIN) no fue sangrado, por lo que también causó errores.

    
respondido por el Roger Rowland

Lea otras preguntas en las etiquetas