Forum: Mikrocontroller und Digitale Elektronik Was mache ich falsch? (MPLab ASM)


von Heeri (Gast)


Lesenswert?

Hallo,
bin neu hier und auch ein PIC-Anfänger (habe aber SPS-Erfahrung)
Ich verzweifle gleich mit meinem ersten Programm (genauer Befehl)
Das Programm läßt sich nicht fehlerfrei übersetzen...

; Hier ist mein erstes Assembler-Test-Programm für PIC  5.12.04 12:10
    list p=16f676               ;der Prozessortyp wird festgelegt
    #include "p16f676.inc"      ;die include-Datei
    org    0x00                 ;Startadresse nach Reset
    goto   main                 ;Sprung zum Hauptprogramm
main
  clrf  TRISB    ;PORTB all outputs, display 4 MSB's
  end

Nach MAKE kommt folgender Fehler:

Error[113]   C:\EIGENE DATEIEN\PIC\TEST PR02.ASM 14 : Symbol not
previously defined (TRISB)

Wer kann mir helfen? Danke, Heeri.
(benutze MPLab IDE v6.40, MPASM)

von Gerhard Gunzelmann (Gast)


Lesenswert?

Hallo

der hat wohl keinen PORTB. Schau Dir mal die INC-datei an, da gibts nur
ein TRISA und ein TRISC

Gerhard

von Markus (Gast)


Lesenswert?

Hallo,

Infos zu PIC findest du unter www.sprut.de
Die Initialisierung muß wie folgt aussehen:
        bsf     STATUS, RP0     ; auf Bank 1 umschalten
        movlw   B'00000000'     ; PortB alle output
        movwf   TRISB
        bcf     STATUS, RP0     ; auf Bank 0 schalten
        clrf    PORTB           ; alle LEDs ausschalten

Ich hoffe dies hilft dir weiter.

Gruß Markus

von Heeri (Gast)


Lesenswert?

Danke für Eure Antworten!
Habe mich jetzt über das original Datenblatt hergemacht und die
Init-Befehle von dort übernommen. Geht aber immer noch nicht!

;PortC aktivieren... (aus DataSheet)
  bcf   STATUS,RP0   ;Bank 0
  clrf   PORTC     ;Init PORTC
  bsf   STATUS,RP0   ;Bank 1
  clrf   ANSEL     ;digital I/O
  movlw   0Ch     ;Set RC<3:2> as inputs
  movwf   TRISC     ;and set RC<5:4,1:0> as outputs
  bcf   STATUS,RP0   ;Bank 0

In Zeile 4 kommt folgender Fehler:
Message[302] C:\TEST PR02.ASM 21 : Register in operand not in bank 0.
Ensure that bank bits are correct.

Gleiches Problem bei Port A! Die Umschaltung auf Bank 1 scheint nicht
zu funktionieren. Warum? (Was ist eigentlich eine Bank?)

Heeri.

von Markus (Gast)


Lesenswert?

Hallo,

die Meldung 302 ist keine Fehlermeldung sondern nur eine Warnung oder
Info. Nach dem #include... kann mit dem Befehl
ERRORLEVEL      -302
die Meldung ausgeschaltet werden.

Im Datenblatt wird unter dem Punkt Special Function Register die
unterschiedlichen Bänke erklärt.

Gruß Markus

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.