Forum: Mikrocontroller und Digitale Elektronik ENC28J60 SPI Befehl BFC mit NOTAND


von Kurt S. (kurt1978)


Lesenswert?

Hallo Zusammen,

Ich mache gerade meine ersten Gehversuche mit dem Pollinboard mit dem 
ATMega32 und den ENC28J60...

Ich programmiere in reinem Assembler.


Frage:
Im Handbuch gibt es den BFC Befehl...
Ich dachte Anfangs da könnte ich wie beim UND Befehl entsprechend die 
Bits maskieren die ich löschen will.

So wie es aussieht wird bei diesem Befehl nicht UND verknüpft sondern 
laut Datenblatt NOTAND...

Angeblich soll wenn in einem Register 0xF1 steht und wir 0x17 mit dem 
BFC Befehl anwenden im Rgeister 0xE0 verbleiben...

Hää?? Kann ich nicht nachvollziehen...

Wahrheitstabelle NichtUnd
0 0 = 1
0 1 = 1
1 0 = 1
1 1 = 0

11110001 0xf1
00010111 0x17
-------------
11101110 0xEE Ergebniss mit NichtUnd nach meiner Logik....

11100000 0xE0 soll laut Datenblatt rumkommen ?




Naja, ich will eigentlich die Bänke im ECON1 Register mit dem BFC und 
BFS Befehl umschalten.....
Ich dachte mit dem BFC und der Maske 0x11111100 könnte ich die Bits 0 
und 1 löschen.

Geht es dann mit der Maske 0x00000011 ?

Wer kennt sich da aus ?
Zur Zeit habe ich es mit RCR und WCR gelöst....
Dennoch intressiert es wie es mit dem BFC Befehl gehen sollte

von Sascha W. (sascha-w)


Lesenswert?

Hallo,

das ist eigentlich ganz einfach

BFC  alle Bits die im Datenbyte des Befehls gestetzt sind werden im 
Register gelöscht

00010111 0x17 (ASM-Befehl COM)
-------------       \/
11101000 0xe8

11110001 0xf1
11101000 0xe8 (ASM-Befehl AND)
-------------       \/
11100000 0xE0 soll laut Datenblatt rumkommen ? genau

BFS  alle Bits die im Datenbyte des Befehls gestetzt sind werden auch im 
Register setzt

ist ein einfachs ODER

Sascha

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.