Forum: Mikrocontroller und Digitale Elektronik Ich bräuchte hilfe beim ADCON Register


von Franz (Gast)


Lesenswert?

Hallo habe da eine Frage kann mir vieleicht bitte jemand helfen?

ADCON = 0x3e; (also 00111110b)

wie setzte ich das 4 Bit wieder auf Null ohne die anderen stellen zu 
ändern und das ADCON ist nicht bitadressierbar.


MFG Franz

von Floh (Gast)


Lesenswert?

Einlesen, verunden mit 0b11101111 und wieder zurückschreiben.
Wobei das möglicherweise auch der Compiler für dich übernimmt, kannste 
mal das ausprobieren:

ADCON &= ~(1<<4); //entspricht 0b11101111, falls 8bit

von Franz (Gast)


Lesenswert?

Ja aber die anderen Bits darf ich nicht verändern

von Jens (Gast)


Lesenswert?

Franz schrieb:
> Ja aber die anderen Bits darf ich nicht verändern

Mit einem Hilfsregister für ADCON arbeiten. Das Bit im Hilfsregister 
setzen und dann das komplette Byte auf ADCON ausgeben.

von Floh (Gast)


Lesenswert?

Franz schrieb:
> Ja aber die anderen Bits darf ich nicht verändern

Und wo wird ein Bit verändert, das mit 1 verundet wird?
Solltest dir mal Bitmanipulation anschauen.

von Floh (Gast)


Lesenswert?


von Franz (Gast)


Lesenswert?

Darf ich das auch so machen oder gibt es da Probleme?

ADCON = 0x2e;

von Franz (Gast)


Lesenswert?

Ok jetzt habe ich es aber wo ist der unterschied wenn ich das so

ADCON = ADCON & 0xEF;

oder so

ADCON = 0x2E;

mache???

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Das erste lässt alle Bits außer dem einen so wie sie waren, das zweite 
nicht.

Was passiert, wenn ADCON vorher 1011_0001 war?

mit & 1110_1111 wird es zu 1010_0001, also nur dein eines Bit wird 
gelöscht

mit = 0010_1110 wird es zu 0010_1110, also wird alles verändert


Kleiner Unterschied, oder?

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.