Forum: Compiler & IDEs 10 Bit Ausgabe in 8 bit + 2 bit trennen


von youssefcool (Gast)


Lesenswert?

hallo,
wie kann ich eine 10 Bit Signal mit zwei 8 Bit Registern ausgeben.
ich habe schon die ersten 8 Bits des 10 Bit Signals im PORT D (8 Bit 
gross) ausgegeben aber wie kann ich die letzten 2 Bits im Pin 1 und Pin 
2 des PORT C ausgeben können:

// Initialisierung
// Prot D als Ausgang fuer die ersten 8 Bits vom Ausgangsignal
DDRD = 0xff;
// Pin C0,1 als Ausgaenge fuer die letzten 2 Bits vom Ausgangsignal
DDRC |= (1 << PC0) | (1 << PC1);

// Hauptprogramm
PORTD = out[m]; // die ersten 8 Bit in PORT D ausgeben

????;           // die letzten 2 Bit in Pin 1 und 2 von PORT C ausgeben

von Karl H. (kbuchegg)


Lesenswert?

youssefcool schrieb:

> gross) ausgegeben aber wie kann ich die letzten 2 Bits im Pin 1 und Pin
> 2 des PORT C ausgeben können:

Du meinst Pin 0 und Pin 1 (zumindest hast du die als Ausgang 
konfiguriert). Gewöhn dir grundsätzlich an, immer bei 0 zu zählen 
anzufangen. Ein Mix führt irgendwann immer zu Missverständnissen.

Die oberen 2 Bits um 8 Stellen nach rechts verschieben

> // Initialisierung
> // Prot D als Ausgang fuer die ersten 8 Bits vom Ausgangsignal
> DDRD = 0xff;
> // Pin C0,1 als Ausgaenge fuer die letzten 2 Bits vom Ausgangsignal
> DDRC |= (1 << PC0) | (1 << PC1);
>
> // Hauptprogramm
> PORTD = out[m]; // die ersten 8 Bit in PORT D ausgeben
>
> ????;           // die letzten 2 Bit in Pin 1 und 2 von PORT C ausgeben

  PORTC = out[m] >> 8;

Ja nachdem, ob die Gefahr besteht, dass in out[m] noch irgendwelche 
zusätzlichen Bits gesetzt sind oder nicht, bzw. was sich sonst noch so 
am PORTC tut (Pullup widerstände für Eingänge), muss man ev. noch 
maskieren bzw. den alten Wert vom PORTC mitbenutzen.

   PORTC = ( PORTC & ~0x03 ) | ( ( out[m] >> 8 ) & 0x03 );

von youssefcool (Gast)


Lesenswert?

vielen Dank es hat funktioniert

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
Noch kein Account? Hier anmelden.