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
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 );
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.