Forum: Mikrocontroller und Digitale Elektronik Probleme mit MPLAB IDE


von Gypro (Gast)


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/lauflicht/lauflich.htm)
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

von Atlas (Gast)


Angehängte Dateien:

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!

von Gypro (Gast)


Lesenswert?

Genau das gleiche Problem.

Dan liegt es schon mal nicht am Pprogramm.

Trotzdem vielen Dank Atlas

von Gypro (Gast)


Lesenswert?

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

von Atlas (Gast)


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

von Gypro (Gast)


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

von EGO (Gast)


Lesenswert?

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

MFG
Ralf

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.