rol in GCC

Gast #540896
Lesenswert?
• ▲
▼
Ja, ist heiß heute, und ich hab ne Baustelle vorm Fenster!!!

Carry ist nicht so wichtig, ... nur die bits die links rausfallen müssen 
rechts wider rein in mein Byte.

Noch Vorschläge ??

Ach ja, muss halt schnell gehen, ist in ner Interruptroutine.
#540899
Lesenswert?
• ▲
▼
@ tt

>Noch Vorschläge ??
>Ach ja, muss halt schnell gehen, ist in ner Interruptroutine.

Wens ohne Assembler sein soll, dann vielleicht so

// unit8_t

if (a & 0x80)
  a = (a<<1) | 1;
else
  a = (a<<1);

// uint16_t

if (a & 0x8000)
  a = (a<<1) |1;
else
  a = (a<<1);

MfG
Falk

Persönliche Seite #540915
Lesenswert?
• ▲
▼
> Hmm, ich wüsste im Moment nicht, wie man es eleganter und schneller
> macht. Der AVR hat keinen ROL ohne Carry.

Na dann schau mal LSL und LSR an.

LSL:

>Shifts all bits in Rd one place to the right. Bit 7 is cleared. Bit 0 is
>loaded into the C flag of the SREG. This operation effectively divides an
>unsigned value by two. The C flag can be used to round the result.
#540954
Lesenswert?
• ▲
▼
@ Simon Küppers (simon)

>Eben, denn LSL arbeitet ohne Carry. ROL mit.

Sicher, aber wie ist dein Posing zu verstehen?
Was willst du damit sagen?

>>> Hmm, ich wüsste im Moment nicht, wie man es eleganter und schneller
>>> macht. Der AVR hat keinen ROL ohne Carry.

>>Na dann schau mal LSL und LSR an.

MfG
Falk
#540987
Lesenswert?
• ▲
▼
@ tt

>Im moment mach ich das:

>mst= (signal_out & 0x80);
>if (mst) PORTB |=(1<<PB3);
>else PORTB &= ~(1<<PB3);
>signal_out= signal_out<<1;

Wo brauchst du dabei ein ROL? Du willst doch nur das MSB auf ein Portpin 
kopieren und die Daten um ein Bit weiterschieben. Sieht nach Soft-SPI 
aus.

>geht das einfacher?

Nein. Wozu auch?

MFG
Falk




Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.