Was mache ich falsch? (MPLab ASM)

Gast #130339
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.