www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC asm: wie wert vom port abfragen?


Autor: Simon A. (moony) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich will mit "btfsc PORTB,H'xx'" einen bestimmten wert abfragen. wenn 
dieser erreicht ist, soll die nächste zeile ausgeführt werden.
mein problem ist, dass sich das nicht so verhält, wie ich will: z.b. ist 
H'02' nicht der wert 0x02 sondern 0x04 und H'03' ist 0x08. was mache ich 
falsch?

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
btfsc PORTB,H'xx'

fragt das BIT xx von PORTB ab, das Verhalten ist also korrekt wie von 
dir beschrieben.

Ansonsten => www.sprut.de

/Ernst

Autor: Simon A. (moony) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die antwort.
ich kenne sprut.de, hat mir auch schon oft geholfen, nur find ich zu dem 
problem auch da keine lösung. bin halt auch noch anfänger ;) ich brauch 
eben nicht den wert 0x02, 4 oder 8 sondern z.b. 0x09.

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz so einfach geht es leider nicht, Ernst schrieb ja schon dass btfsc 
nur ein einzelnes Bit vergleicht und nicht alle 8 Bit von PortB.

Ich hätte jetzt nur einen Vorschlag für PIC18 Controller

movlw 0x09 ;zu vergleichender Wert (aus Deinem Beispiel)
xorlw PORTB,w ;Vergleich durch Exklusiv-Oder Verknüpfung
               ;Gleichheit ergibt Zero, also Z-Flag gesetzt
btfsc STATUS,Z ;überspringe nächsten Befehl bei Ungleichheit

Autor: Simon A. (moony) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank, nachdem ich xorlw mit xorwf ausgetauscht habe funktioniert 
es! ich benütze übrigens gerade den pic16f627a.

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freut mich dass Du meinen (unabsichtlichen) Fehler gefunden hast.
Ich hab zwar jeden Tag beruflich mit dem Kram zu tun, aber sowas kommt 
immer wieder vor wenn man ohne Zusammenhang mit einem Programm was aus 
dem Hut zaubert.

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.