Hallo, ich brauche eure Hilfe. Wie kann ich ein Bit eines Ports verschieben, ohne das mir ein Bit verloren geht? Alle Bits bis auf eins der ersten 4 Bits sind gesetzt. Es dürfen nur Bit 0 bis 3 geschoben werden. Wenn Bit3 Null ist, soll die Prozedur wieder von vorne anfangen. Beispiel: 0b11111110 0b11111101 0b11111011 0b11110111 0b11111110 usw. Bei <<1 wird ja immer eine Null nachgeschoben. Wäre nett, wenn mir jemand helfen würde.
in C: if( (i+=i+1) == 0xEF ) i = 0xFE; oder in 8051-Assembler: mov a, i setb c rlc a jb acc.4, m1 swap a m1: mov i, a Peter
Der Befehl heisst ROL = Rotate Left through carry Bitmuster laden = 11111110, Carry setzen und dreimal ROL. Dann von vorne beginnen.
Danke für eure Hilfestellung, werde es mal wie Peter es beschrieben hat in C ausprobieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.