www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit MPLAB IDE


Autor: Gypro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich bin ein Noop was PICs betifft und versuche gerade mein erstes 
Probramm ( ein Lauflich von Sprut) zum laufen zu bringen.

Ich habe das Programm von sprut 
(http://www.sprut.de/electronic/pic/programm/laufli...)
in eine Textdatei kopiert und als ASM compiliert.
jetzt rufe ich das mit MPLAB IDE auf und ändere den Prozessortypen (ich 
habe einen 16F628A)

Beim Assemblieren bekomme ich fast pro Zeile folgende Fehlermeldung:
Error[152]   C:\DOKUMENTE UND EINSTELLUNGEN\BESITZER\DESKTOP\LAUFLICHT 
MIT MPLAB IDE\4 LAUFLICHT.ASM 25 : Executable code and data must be 
defined in an appropriate section


Ab und zu sagt er noch ich solle PORTB definieren:
Error[113]   C:\DOKUMENTE UND EINSTELLUNGEN\BESITZER\DESKTOP\LAUFLICHT 
MIT MPLAB IDE\4 LAUFLICHT.ASM 35 : Symbol not previously defined (PORTB)

Was mache ich falsch?

Muss ich irgendwie noch etwas hinzufügen/definieren?
Und wenn wie mach ich das dann?

Schon mal vielen Dank im Vorraus.

Gy

Autor: Atlas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe mich anfangs auch mit dem Lauflicht beschäftigt.
Als Anhang füge ich mein etwas verändertes ASM-File bei.
Nicht alle Änderungen in der Init sind für die Umstellung
auf den PIC 16F628A unbedingt notwendig, aber das Programm
läuft auf dem realen PIC.

Schau mal, was Du damit anfangen Kannst!

Autor: Gypro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau das gleiche Problem.

Dan liegt es schon mal nicht am Pprogramm.

Trotzdem vielen Dank Atlas

Autor: Gypro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal gehört das MPLAB zu lange Pfade nicht verträgt.  Wo hast du 
die ASM Datei gespeichert?

Autor: Atlas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite nicht mit MPLAB, sondern wandle das mit dem Editor
erstellte ASM-File mit dem Programm MPASMWIN direkt in ein
HEX-File um.
Aber um Deine Fehlermeldung zu elliminieren, füge im File eine
ORG-Anweisung in der Zeile vor der Init ein. Dies teilt dem
Assembler mit, wo er das Programm im Speicher ablegen soll.

so wie hier:

  ORG 100
Init
  MOVLW....


MfG

Autor: Gypro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Juhuuuuu kein Error mehr!!!!!!!!!!!!

Aber leider auch kein Hex. File.
Stadt dessen diese Nachricht:

Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe" /q 
/p16F628A "Lauflicht 1.asm" /l"Lauflicht 1.lst" /e"Lauflicht 1.err" 
/o"Lauflicht 1.o"
Message[301] C:\PROGRAMME\MICROCHIP\MPASM SUITE\P16F628.INC 35 : 
MESSAGE: (Processor-header file mismatch.  Verify selected processor.)
Message[302] C:\DOKUMENTE UND EINSTELLUNGEN\BESITZER\DESKTOP\LAUFLICHT 
MIT MPLAB IDE\LAUFLICHT 1.ASM 30 : Register in operand not in bank 0. 
Ensure that bank bits are correct.
BUILD SUCCEEDED: Sat Jun 02 21:26:45 2007


Anscheinend muss ich mehr umstellen als nur das was ich getan hab. 
Hierfüar mal mein Programm:

    list p=16f628a

; Includedatei für den 16F628a einbinden
;
        #include <P16f628a.INC>
;
; Configuration festlegen
;
; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator
;       __CONFIG        _PWRTE_ON & _WDT_OFF & _XT_OSC
;
; ab 4 MHz: Power on Timer, kein Watchdog, HS-Oscillator
         __CONFIG        _PWRTE_ON & _WDT_OFF & _HS_OSC
;
;**************************************************************
; Variablennamen vergeben

loops   Equ     0x22            ; Zähler für Warteschleife
loops2  Equ     0x23            ; Zähler für Warteschleife

;**************************************************************
; los gehts mit dem Programm
; Port B auf Ausgabe stellen

 ORG 010

Init
        bsf     STATUS, RP0     ; auf Bank 1 umschalten
        movlw   B'00000000'     ; PortB alle output
        movwf   TRISB
        bcf     STATUS, RP0     ; auf Bank 0 zurückschalten
        clrf    PORTB           ; alle LEDs ausschalten

; 1. LED einschalten

        bsf     PORTB,0         ; LED an RB0 einschalten

; Lauflicht

Loop
        call    Wait            ; Wartezeit
        rlf     PORTB,f         ; laufen zur nächsten LED
        goto    Loop


;**********************************************************
; Warteschleife 250 ms

Wait
        movlw   D'250'          ; 250 ms Pause
        movwf   loops

Wai
        movlw   .249           ; Zeitkonstante für 1ms
        movwf   loops2
Wai2    nop                    ;
        nop
        nop
        nop
        nop
        nop
        decfsz  loops2, F      ; 1 ms vorbei?
        goto    Wai2           ; nein, noch nicht
                               ;
        decfsz  loops, F       ; 250 ms vorbei?
        goto    Wai            ; nein, noch nicht
        retlw   0              ; das Warten hat ein Ende

        end




Nochmal  vielen Dank Atlas.

Es sieht so aus als ob mir einige Grundlagen zum Programierne fehlen. 
Kannst du mir ein Tutorial oder so empfehlen?

mfg Gy

Autor: EGO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir doch mal diese Seite an 
:http://www.roboternetz.de/wissen/index.php/PIC_Assembler

MFG
Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.