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?
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
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.
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
vielen dank, nachdem ich xorlw mit xorwf ausgetauscht habe funktioniert es! ich benütze übrigens gerade den pic16f627a.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.