Forum: Mikrocontroller und Digitale Elektronik Problem assamblen meines mit MPLAB8.60


von Walky88 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,arbeite seit kurzem mit dem 16F627A und will zum Einstieg nur eine 
LED auf meinem Experimentierboart leuchten lassen.Doch da scheitert es 
schon am Assamblen.Was könnte ich da wohl falsch gemacht haben,kanns 
auch an meinem Programm liegen?
Infos:
Habe Ein neues Projekt(Untitled87.asm)unter PROJEKT 
WIZARD-16F627A-MPASMAssembler(mpasmwin.exe)v5.37 erstellt und unter 
C/Frank/Eigene/Dokumente;gespeichert.
Habe diese Datei in MPLAB8.60 mit OPEN aufgerufen.Manchmal erscheint die 
MAKE Taste nicht und wenn doch dann schlägt der Assamblerversuch 
fehl.Freue mich auf Rückmeldungen jeder Art.

von Hmm (Gast)


Lesenswert?

>Freue mich auf Rückmeldungen jeder Art.

Das heisst: "Experimentierboard". Ein "Board" ist eine Art Brett. Ein 
Panel. Ein flacher Gegenstand auf dem andere Gegenstände montiert sind.

Das heisst (wenn man es eindeutschen will): Ass e mblieren. Dem 
Wortsinne nach, tut das ein "Zusammensetzer", der Dinge aneinanderfügt. 
Im Englischen heisst das Ding "Assembler" und seine Tätigkeit "to 
assemble".
Eigentlich passt das nicht so recht, weil es dann doch eine Art 
"Übersetzer" ist, der Mnemonics in Hexadezimale Zahlen umwandelt.

Zur Frage selbst, möchte ich anregen, etwaige Fehlermeldungen hier zu 
posten.

von Anja (Gast)


Lesenswert?

Walky88 schrieb:
> Was könnte ich da wohl falsch gemacht haben

irgendwo fehlt noch das Include des Prozessor-Headers.
unten ein Beispiel für den PIC18F2520 aus meinem Batteriewächter-Artikel

[code]
;
; PIC18F2520 is the target processor, values decimal, eXpand macros
;
  LIST  p=18F2520,r=dec,x=on
;
        include "P18F2520.INC"
;
[\code]

Gruß Anja

von Walky88 (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Erläuterung;Bin halt noch ein blutiger Anfänger.
 Hab mein Programm jetzt geändert und folgende Fehlermeldungen 
bekommen(siehe Anhang).Auserdem steht mir in diesen Fall nur die 
Taste"quick build" aber kein "MAKE" zur Verfügung(irgendwie komisch).

von Chris B. (dekatz)


Lesenswert?

Nö, das Programm läßt sich problemlos Assemblieren.
Es macht sicher nicht das was du gerne möchtest:
movlw  B'00000000'  ; Bort B alle output
movf  TRISB

<movf TRISB> speichert nicht den Wert in <w> nach <TRISB>, sondern 
speichert <TRISB> in <TRISB> ab - ziemlich sinnlos.
movf TRISB,W würde zwar <TRISB> in <W> laden - aber auch das willst du 
nicht.
Richtig wäre <movwf TRISB>

<bsf PORTB,3> wird auch nicht Bit3 im PORTB setzen weil PORTB in einer 
anderen Speicherbank als TRISB befindet.

Bei den "kleine" PIC gewöhnst du dir am besten an, beim Zugriff auf die 
SFR immer mit BANKSEL <Register> zu arbeiten.

Das hier macht genau was du wolltest:

  list p=16f627A  ;

  #include "p16f627A.inc"

  org  0x00  ;
  goto  main    ;

main

  BANKSEL TRISB    ;bank 1 umschalten
  movlw  B'00000000'  ; Bort B alle output
  movwf  TRISB   ;

  BANKSEL  PORTB
  bsf  PORTB,3   ;

  goto  $
  end

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Walky88 schrieb:
> und folgende Fehlermeldungen
> bekommen(siehe Anhang).

Warum um alles in der Welt muss das ein Word-Dokument sein, und dann 
auch noch eines im "tollen" 2007er-Format?

von Ottmar K. (wil1)


Lesenswert?

Hallo Walky88
Zunächst mal der übliche gute Rat für die Programmierung der microchip - 
Controller: [http://www.sprut.de/index.htm] Auf dieser Seite erfährst Du 
als Anfänger in der Programmierung von PIC's per Assembler praktisch 
alle notwendigen Grundlagen. Dort beginnt das ganz einfach, vom Aufbau 
eines Programms über das Blinken von LED's bis hin zu anspruchsvollen 
Programmen wie z.B. Frequenzzähler usw.. Folge einfach den dort 
gegebenen Lernbeispielen.

Falls Du Probleme mit dem grundsätzlichen Aufbau eines 
Assemblerprogramms für den von Dir gewählten PIC hast, schau doch 
einfach mal in dieses MPLAB-Verzeichnis: "MPLAB\MPASM 
Suite\Template\Code". Dort findest Du für jeden PIC das Gerüst für den 
Programmaufbau.

Weiterhin viel Erfolg und wenn es mal mit der Programmfunktion oder der 
Technik nicht so klappt: In diesem Forum wirst Du  auch wenn Du PICs 
programmierst stets Unterstützung finden.

Ach ja: Word-Dokumente sind äußerst unbeliebt (Viren, Schadprogramme) 
mach mit PDF oder reinem Text (*.txt) oder als Bild (*.png)

mfG Ottmar

von Walky88 (Gast)


Lesenswert?

Vorerst danke für eure Hilfe.Hab das Programm geändert, die 
Fehlermeldungen jedoch bleiben bestehen.
Kann es sein das der Fehler beim anlegen bzw. speichern und öffnen 
liegt(taste "MAKE"lest sich nur bei mcp.-Dateien betätigen nicht beim 
mühsamenöffnen von asm.-Dateien)?
Habe mich diesbezüglich  schon an die Beispiele und Vorlagen im Internet 
gehalten obwol sich bei meinem Programm einige Fenster 
unterschieden.Vielleicht ist mir da ein fehler passiert.

Kann mir jemand sagen ob vielleicht da der fehler liegt oder wie er so 
ein Projekt anlegt und öffnet?(komme trotz Volage nicht ganz mit dem 
Programm klar)

von Chris B. (dekatz)


Lesenswert?

Die Fehlermeldungen kann ich nicht nachvollziehen.
Das Programm (vom 07.03.2013 06:23) wird ohne Fehlermeldung Assembliert.
Das einzige was man "provozieren" könnte wären 2 Warnings wenn man die 
Direktiven "org" und "end" nicht einrückt, was aber auf die 
Funktionsfähigkeit keine Einfluß hat.

Vielleicht solltest du MPLAB nochmals installieren und dann am besten 
gleich die aktuelle Version 8.90, die 8.60 ist schon etwas antiquiert 
(obwohl die Version keine Einfluß auf dieses Miniprogramm hat).

von Ottmar K. (wil1)


Angehängte Dateien:

Lesenswert?

Hallo Walky88

Dass Du nicht gleich die Lust verlierst, dazu lege ich Dir ein 
komplettes Blinkprogramm aus meiner Anfangszeit bei. Habe es mal rasch 
auf den 16F627 umgemoppelt. Läuft jedenfalls im Simulator durch. Falls 
Du den 16F627A verwendest musst Du allerdings die Einträge (A) im 
Programm angleichen.

Steige aber zuvor lauf MPLAB 8.90 um!

Im Netz gibt es verschiedene Anleitungen zur MPLAB-IDE, insbesondere 
dazu wie ein Programm angelegt und wie es assembliert wird. Dazu sind 
noch die Infos interessant, welche es zum in MPLAB intergrierten 
Simulator "MPLAB-Sim" gibt.
Mit dem Simulator kannst Du z.B. das Ein- und Ausschalten Deiner LED 
(Wechsel des Pegels am entsprechenden PIN von 0 -> 1 -> 0 -> 1 usw. 
schrittweise oder auch als animierte Folge beobachten. Im Internet gibt 
es jede Menge Infos und Anleitungen zu MPLAB und den darin integrierten 
Tools. Du musst halt die gute alte Tante Google bemühen.

Ich empfehle Dir mal diese Links:

deutsch: 
[http://www.fernando-heitor.de/index.php/downloads/Dokumente/MPLAB-Tutorial/]

[http://www.microchip.com] - jede Menge Druckschriften, Erläuterungen, 
Anleitungen allerdings sämtlich in engl. Sprache.

Google-Suchbegriff:
"B222L – Introductory Laboratory Exercise – Part 1 First PIC project"
Microchip-Druckschrift DS33014J:
                              MPASM™ Assembler,
                              MPLIN K™ Object Linker,
                              MPLIB™ Object Librarian
                              User’s Guide

mfG Ottmar

von Walky88 (Gast)


Lesenswert?

Hallo zusammen,

Erstmal vielen Danke für eure Ratschläge und Lernbeispiele. "Tante 
Google" hat mich würklich nicht enttäuscht!
Die Seite von Michael Floessel hat mir hier sehr geholfen!

Mittlerweile hab ich das aktuelle MBLAB runtergeladen
             das anlegen der Projekte klappt
             das umwandeln des Codes funktioniert und
             das Simulationsfenster kann angesteuert werden
obwohl die Simulation des Programms noch nicht möglich ist
(Endadresse zu lang?!)

list p=16f627a
  #include <p16f627a.inc>

  org  0x00 ;
    #define LED1    bsf   PORTB, LED1

    goto   main

main

  bsf      STATUS, RP0
  movlw  B'00000000'
  movwf  TRISB
  bcf      STATUS, RP0
  clrf  PORTB
  bsf      PORTB,0
    end


Vielleicht hat da jemand eine Idee?

Bis die Tage:  Walky88

von Chris B. (dekatz)


Lesenswert?

Wenn du vor dem <end> ein <goto $> einfügst, dann kommt auch die 
Fehlermeldung
<CORE-W0014: Halted due to PC incrementing over the Maximum PC address 
and wrapping back to Zero>
nicht mehr, sondern der Controller springt "auf der Stelle" und läuft 
nicht bis zum Ende des Programmspeichers um danach wieder bei der 
Adresse 0 von vorne zu beginnen.

von Wilhelm F. (Gast)


Lesenswert?

Microchip hat doch für alles Beispielcode, und zwar komplett, ohne daß 
bspw. im Header mal was fehlt. Und MPLAB war zumindest bei mir immer 
völlig problemlos.

Man muß da nur eines tun: Den richtigen µC auswählen.

Der PIC-Assembler ist anfangs gewöhnungsbedürftig, aber da findet man 
auch hinein. Alles ist in Manuals eindeutig klar beschrieben.

von Ottmar K. (wil1)


Lesenswert?

hallo Walky 88

ich will ja nicht grob werden, aber anscheinend bist Du 
beratungsresistent. Schau Dir doch noch mal mein Programm an welches ich 
Dir damals als Anlage beigelegt habe 
[Beitrag "Re: Problem assamblen meines mit MPLAB8.60"]. Ich will es ja 
nicht als leuchtendes Beispiel darstellen, aber es funktioniert!

Dein größter Fehler:
DU MUSST das CONFIG-Word in das ASM File reinschreiben!!
z.B.
 __CONFIG  _XT_OSC & _WDT_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

Vergleiche doch mal mein ASM-File mit dem Deinen, dann muss Dir doch 
einiges klar werden! Lies dazu auch mal in den von mir damals gegebenen 
Links nach!

Anmerkung: MPLAB lässt nur eine bestimmte Länge des Pfades zum ASM-File 
zu (ich glaube max. 36?? Zeichen).

 mfG Ottmar

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.