Forum: Mikrocontroller und Digitale Elektronik warum bringt der MPLAB Assembler diese Fehlermeldung ?


von Michael S. (misax)


Lesenswert?

hallo;
ich habe mir das Beispielprogramm von sprut in eine asm-Datei kopiert 
und auf meinen PIC angepaßt. Die p16f15313.inc habe ich aus der 
MPLAB-Installation in meinen Ordner kopiert und sie zu den Sourcefiles 
hinzugefügt. Trotzdem bekomme ich die Fehlermeldung:

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/c-achtkern/mplab/a03-f15313.X'
make  -f nbproject/Makefile-default.mk 
dist/default/production/a03-f15313.X.production.hex
make[2]: Entering directory 'C:/c-achtkern/mplab/a03-f15313.X'
"C:\Program Files\Microchip\xc8\v2.40\pic-as\bin\pic-as.exe" 
-mcpu=PIC16F15313 -c \
-o build/default/production/ass1.o \
ass1.asm \
 -msummary=+mem,-psect,-class,-hex,-file,-sha1,-sha256,-xml,-xmlfull 
-fmax-errors=20 -mwarn=0 -xassembler-with-cpp
make[2]: *** [build/default/production/ass1.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
ass1.asm:2:: error: (876) syntax error
ass1.asm:13:: error: (876) syntax error
ass1.asm:6:: error: (800) undefined symbol "main"
(908) exit status = 1

hier das Programm:
1
    list p=16f15313             ;der Prozessortyp wird festgelegt
2
    include "p16f15313.inc"     ;die include-Datei mit vielen Festlegungen wird geladen
3
                                ;z.B. sind hier Standardnamen für wichtige
4
                                ;Register und Bits festgelegt
5
    org    0x00                 ;die Startadresse nach Reset ist 0, hier startet der PIC
6
    goto   main                 ;Sprung zum Hauptprogramm
7
8
    org    0x04                 ;Interruptvector ist 0x04,
9
                                ;bei Interrupt springt der PIC hierher
10
;hier muss die Interruptbehandlungsroutine stehen,
11
;falls Interrupts genutzt werden sollen
12
13
main
14
;hier steht das eigentliche Hauptprogramm
15
16
    end                         ;das Ende des Programms
was habe ich falsch gemacht ?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

main: ist ein Label
main ist kein Label

https://de.wikipedia.org/wiki/Label_(Programmierung)

von Michael S. (misax)


Lesenswert?

jetzt kommt

make[2]: *** [build/default/production/ass1.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
ass1.asm:2:: error: (876) syntax error

was ist denn an der include-anweisung falsch ? ich habe doch einfach das 
Muster von strut kopiert.

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Michael S. schrieb:
> ass1.asm:2:: error: (876) syntax error

> was ist denn an der include-anweisung falsch ?

Wie wäre es mit #include?

Ich glaube du solltest erst mal die Programmiersprache lernen, bevor du 
fremde Codes zusammen kopierst.

> ich habe doch einfach das Muster von strut kopiert.

Wer oder was ist strut?

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Michael S. schrieb:
> habe ich aus derbMPLAB-Installation

Hast du nicht, sondern pic-as genutzt!
"C:\Program Files\Microchip\xc8\v2.40\pic-as\bin\pic-as.exe"

Pic-as nutzt völlig andere Syntax!

von Michael S. (misax)


Lesenswert?

jetzt kommt:

no psect defined for the line

von Apollo M. (Firma: @home) (majortom)


Lesenswert?


von Michael S. (misax)


Lesenswert?

so hab ich es jetzt und so kommen keine Fehler mehr:

    PROCESSOR 16F15313
    #include <pic16f15313.inc>
    PSECT psect1
    org    0x00
    goto   main
    org    0x04
    main:
    end

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Michael S. schrieb:
> PSECT psect1
>     org    0x00
>     goto   main
>     org    0x04
>     main:
>     end

Dann schau dir mal den Code an, org wäre so nur relative im psect 
definiert!

Statt hier rumzuhängen, wäre zuerst das pic-as User Guide zu lesen und 
dann sind diese basic Questions beantwortet!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.