mikrocontroller.net

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


Autor: youssefcool (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 );

Autor: youssefcool (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank es hat funktioniert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.