C - Was bedeuten diese Zeilen

Gast #1560051
Lesenswert?

Hallo,

kann mir einer erklären was diese Zeilen in einem C Programm machen.

unsigned int command
PORTE=command>>8
PORTA=command;

Gehe ich recht der Annahme das an PortE die oberen 8 Bit und an PortA 
die unteren 8 Bit ausgegeben werden also das diese >>8 sowas wie 
8*schift left ist.
Gast #1560069
Lesenswert?

>> ist der shift right operator, die unteren 8 Bit werden weggedrückt.
In PORTE landet command/256 und in PORTA der Originalwert von command
Welche Breite hat den int bei dir? Hängt von der Maschine ab.
Persönliche Seite #1560123
Lesenswert?

Florian schrieb:
> Es ist für ein AVR Mega32
>
> PortE und PortA sind die 8Bit breiten Ausgangsports
>
> Sagen wir mal command wäre 0x1234
>
> Dann hab ich an PortE 0x34
> und an PortA 0x12
>
> Hab ich das jetzt richtig verstanden?
Nein.

PortA = 0x34 (die niederwertigsten 8-Bit)
PortB = 0x12 (die höchstwertigen 8-Bit).

0x1234 = 0b0001001000110100

Da PortB nur 8-Bit breit ist, werden nur die niederwertigsten 8 Bits 
verwendet, also 0b00110100 = 0x34

0b0001001000110100 >> 1 =
0b0000100100011010 >> 1 =
0b0000010010001101 ...
0b0000000000010010      = 0x12

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren