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.
>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.
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
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).
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
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?
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
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)
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).
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
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
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.
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.
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