Liebe Netzbewohner Gibt es in C einen Befehl der dem Assembler-Befehl ROL oder ROR enspricht ? Gruss Duri
Gast
#434273
In gewisser Weise >> und <<, aber auch *2 und /2. Beachte die Anweisungen a*=2; oder a>>=1; oder a/=2; Allerdings wird hier das Carry ignoriert, das musst Du extra (mit eigener Variable) behandeln, wenn Du es brauchst. oder asm(ror); Was möchtest Du denn genau machen?
Hallo Profi
Aber ich will rotieren (carryübertrag auf Bit 0) mit einem C-Befehl.
Ich will z.B. einen Lauflicht am Port B machen.
PORTB<<=1;
if (bit_is_set(SREG,0)) PORTB|= (1<<PB0);
Da sollte es einen Befehl in C geben der analog zu ROL funktioniert.
Gibt es das ?
Gruss
Duri
Gast
#434320
Nein.
Gast
#434325
Vieleicht so?
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
CU Frank
Hallo A.K. Das wollte ich wissen. Gruss Duri
Hi
1 | |
2 | |
3 | |
4 | |
5 | |
Matthias
Gast
#662094
Geniale Lösungen sind immer einfach :) Cool! Musste ich doch mal loswerden, hab genau sowas gesucht!
Gast
#662700
> Aber ich will rotieren (carryübertrag auf Bit 0) mit einem C-Befehl. Das geht nicht, da es in C Flags gar nicht gibt. > Da sollte es einen Befehl in C geben der analog zu ROL funktioniert. Du kannst auch inline-Assembler verwenden. > //ROR > PORTB = (PORTB<<1) | (PORTB>>7); Etwas besser wäre dann noch: uint8_t portb = PORTB; PORTB = (portb<<1) | (portb>>7);
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.