PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was macht diese Programmzeile (Operator) ???



andirs18
23.09.2010, 10:00
Hi @ all,

ich sitze grad vor einem Programm und weiß nicht was diese 3 Zeilen machen:



P1 = (PID & 0b10000000) >> 7;
P1_temp = ~(ID1 ^ ID3 ^ ID4 ^ ID5);
P0_temp = ID0 ^ ID1 ^ ID2 ^ ID4;

Gruß Andreas

markusj
23.09.2010, 10:14
Hallo Andreas,

die Zeilen sind relativ harmlos, du solltest dir vielleicht Mal ein C-Tutorial durchlesen.
Zeile 1: PID wird bitweise mit 10000000 (Hex 80) und-verknüpft und dann um sieben Stellen nach rechts verschoben -> Es wird das MSB (most significant bit) von PID auf Bitposition 0 von P1 geschrieben.
Zeile 2: Die Konstanten/Makros ID1, 3, 4 und 5 werden xor-verknüpft und das Ergebnis invertiert in P1_temp gespeichert.
Zeile 3: ID0, 1, 2 und 4 werden xor-verknüpft und in P0_temp gespeichert.

mfG
Markus

andirs18
23.09.2010, 10:26
Haloo Markus,
nochmal zur Zeile 1.
Also das 8.Bit von PID wird an die Stelle des 1. Bit in P1 geschrieben ?

Thx Andreas

markusj
23.09.2010, 10:47
Hallo Andreas,

jepp, erst wird PID.7 ausmaskiert (durch das bitweise Und) und dann um sieben Stellen nach rechts geschoben, damit sind die ersten sieben Bits von P1 gleich 0, P1.0 = PID.7

Anmerkung: Var.n ist Bit n (7-0) von Variable Var - Die BASCOM-Schreibweise ist für Dokumentationszwecke ganz nett.

mfG
Markus

steveLB
23.09.2010, 17:43
schau dir die Seite einmal komplett durch
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
ist sehr hilfreich