www.mikrocontroller.net

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


Autor: Heeri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Gerhard Gunzelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

Gerhard

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heeri (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.