Dezimal to binär

Gast #3727000
Lesenswert?

Hi Leute,

ich habe mir das STM32 Nucleo Borad zugelegt und möchte nun an einem 
Port (d0 - d15) jeweils 8 pins verwenden und an denen eine Binärzahl 
ausgeben. Üblicherweise liest man ja im internet, dass man mit dem 
Modulo operator oder durch 2 Faktor eine Dezimal zahl in eine binährzahl 
umwandeln kann.

Ich habe das in der Hinsicht noch nicht ganz verstanden und zwar, möchte 
ich  die Pins D8 - D15 verwenden, um meine in der Software vorher 
definierte Dezimalzahl, als binärzahl auszugeben.

WIe mache ich das ß?
#3727079
Lesenswert?

Hilft nix, wenn du auf einem µC programmieren willst, musst du dich mit 
binärer Logik auseinandersetzen.
Arbeite das durch
http://de.wikipedia.org/wiki/Logische_Verkn%C3%BCpfung

und such mal nach der passenden Umsetzung in deiner Sprache. Weiß nicht, 
wie man bei dem Controller was setzt. Also nur Pseudo C.

bspw.
if ((zahl & 0x01) == 0x01) PIN8_ON;

oder

pin = ((zahl >> stelle) & 1);

Data
#3727179
Lesenswert?

D. S. schrieb:
> Sean Goff schrieb:
>> uint8_t zahl = 129; //0b0000000010000001
>> zahl = zahl << 8; //0b1000000100000000
>> zahl = zahl & 0xff00 //0b10000001xxxxxxxx
>> GPIOD -> ODR = zahl;
>>
>>
>> x = ausmaskiert -> lsbs werden nicht beeinflusst
>
> Doch, sie werden auf null gesetzt.
>
> GPIOD -> ODR &= ~(0xFF00);
> GPIOD -> ODR |= zahl;
>
>
> Data

Ja, das war mir schon klar, hab mich falsch ausgedrückt. Besser noch 
währe dann aber:

GPIOD -> BSRR = zahl;
GPIOD -> BRR = ~zahl;

Der STM hat ja schliesslich extra Register für das.
Moderator (Firma: Titel) Persönliche Seite #3727181
Lesenswert?

Slotti schrieb:
> meine in der Software vorher definierte Dezimalzahl, als binärzahl
> auszugeben.
Überleg mal, wie der Controller deine Dezimalzahl intern darstellt. Das 
musst du dir selber erarbeiten. Das ist wichtig!

Als kleiner Denkanstoss: der Controller rechnet immer binär. Nur damit 
du die Zahl einfacher lesen kannst, kannst du sie im Editor und Debugger 
auch in anderen Zahlensystemen darstellen lassen. Das geläufigste ist 
hier dann das Zehnersystem. Es gibt aber auch noch das 
Hexadezimalsystem, das für uC nicht weniger wichtig ist...

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