Hallo,
wenn ich "DDRC|=PC_7" schreibe ist Pin 7 als Ausgang bestimmt.
Warum ergibt "|=" eine 1 und "&=~" eine 0
Gibt es dazu eine genaue Erklärung?
Danke
roy-sam
Hallo,
wenn ich "DDRC|=PC_7" schreibe ist Pin 7 als Ausgang bestimmt.
Warum ergibt "|=" eine 1 und "&=~" eine 0
Gibt es dazu eine genaue Erklärung?
Danke
roy-sam
Hallo
PC_7 steht für (1<<7), also ein "leeres" Byte in dem eine 1 siebenmal nach links geschoben wurde. (1<<0) ist dual 0b0000 0001, (1<<1) ist 0b0000 0010 usw. bis (1<<7) oder 0b1000 0000.
|= oder &= ist eine Verkürzung der Schreibweise, ausgeschrieben wäre das "DDRC = DDRC | PC_7" bzw. "DDRC = DDRC & ~PC_7". Das Datenrichtungsregister wird eingelesen, mit dem Bitmuster (Maske) verknüpft und das Ergebniss wird in das Datenregister zurückgeschrieben. Nur die in der Maske gesetzen Bits (die welche High sind) werden dabei beeinflußt. Die Tilde ~ bewirkt, dass im nachfolgenden Wert die jeweiligen Bits invertiert werden. Wenn alle Bits des Datenrichtungsregisters den Wert der Maske annehmen sollen, dann verwendet man besser die Zuweisung "DDRC = maske".
Ich hoffe, diese kurze Erklärung ist genau genug ;)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo Radbruch,
Danke für die schnelle "genaue" Antwort.
MfG
roy-sam
Lesezeichen