Vereth
Erfahrenes Mitglied
P0=P0|0x07;
Diese Zeile dient dazu, die 3 niederwertigsten Bits auf 1 zu setzen (0x07) und die restlichen Bits auf ihrem Ursprungswert zu belassen (deswegen das P0 OR ...)
P0=P0&((counter&0x07)+0xF8);
Hier werden die drei niederwertigsten Bits des counter's herausgefiltert (counter&0x07) und die restlichen Bits auf 1 gesetzt. Beim Verunden übernimmt P0 die drei niederwertigsten Bits des Counters (weil diese in der vorhergehenden Zeile mit 111 initialisiert wurden) und belässt die anderen Bits auf ihrem ursprünglichen Wert (weil diese alle mit den 1en von 0xF8 verundet werden.
Dadurch erhältst du in P0 einen 3 Bit langen Zähler, der immer wieder die Werte von 0 bis 7 durchläuft, während die restlichen Bits stets ihren Ursprungswert (vermutlich 0x80) beibehalten.
P2 wird einfach bei jedem Durchgang dekrementiert, der counter (Zählvariable) inkrementiert.
Für welchen Zweck diese Register da sind, kann ich nicht beurteilen; das mußt du in deiner Dokumentation nachlesen.
Diese Zeile dient dazu, die 3 niederwertigsten Bits auf 1 zu setzen (0x07) und die restlichen Bits auf ihrem Ursprungswert zu belassen (deswegen das P0 OR ...)
P0=P0&((counter&0x07)+0xF8);
Hier werden die drei niederwertigsten Bits des counter's herausgefiltert (counter&0x07) und die restlichen Bits auf 1 gesetzt. Beim Verunden übernimmt P0 die drei niederwertigsten Bits des Counters (weil diese in der vorhergehenden Zeile mit 111 initialisiert wurden) und belässt die anderen Bits auf ihrem ursprünglichen Wert (weil diese alle mit den 1en von 0xF8 verundet werden.
Dadurch erhältst du in P0 einen 3 Bit langen Zähler, der immer wieder die Werte von 0 bis 7 durchläuft, während die restlichen Bits stets ihren Ursprungswert (vermutlich 0x80) beibehalten.
P2 wird einfach bei jedem Durchgang dekrementiert, der counter (Zählvariable) inkrementiert.
Für welchen Zweck diese Register da sind, kann ich nicht beurteilen; das mußt du in deiner Dokumentation nachlesen.