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


von Simon A. (moony) Benutzerseite


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?

von Εrnst B. (ernst)


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

von Simon A. (moony) Benutzerseite


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.

von Dieter Werner (Gast)


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

von Simon A. (moony) Benutzerseite


Lesenswert?

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

von Dieter Werner (Gast)


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.

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.