Was mache ich falsch? (MPLab ASM)

Gast #130339
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)
Gast #130341
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
Gast #130342
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.
Gast #130343
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren