www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 Bit Eingabe per Taster (Display) mit don't care Fällen


Autor: GEO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ích will eine 16Bit-Eingabe per Taster realisieren und die eingegeben
16 Bit werden binär im Display angezeigt.
Dachte dabei an 2/3 Taster. Einen für die Bitposition (bei Tastendruck
weiterspringen) und einen zum wählen des Bits (1 oder 0)
3 Taster wäre für die Darstellung der der 16 Bit in Hex (hätte dann
hier einen Taster zum Erhöhen und einen zum Erniedrigen der gerade
angewählten Hexzahl.

Mein Problem ist aber, dass ich don't care Fälle berücksichtigen
müsste. Dies wäre dann bei der 16 Bit Variante in Binärdarstellung zu
realisieren.
also z.B. 0010 10XX 00...  mit X als don't care Fall, also egal ob 0
oder 1)

Den Eingegebenen 16 Bit Wert benötige ich dann zum Vergleich mit einem
gegebenem Wert und bei Übereinstimmung muss das Programm dann
reagieren.

Wer hat Hilfe oder Tips zur Realierung. V.a. zu den don't care
Fällen???

Vielen Dank im Voraus.
MfG

Autor: David W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hä?

Auswertung oder Darstellung oder Eingabe, wo ist das Problem?

Auswertung, beide Werte mit nem OR an der X-Stelle 1 machen.
Darstellung, ein X hinsetzen.
Eingabe, 0-1-X-0-1-X mit dem Taster durchlaufen lassen.

Was willst du genau?

Autor: GEO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich seh v.a. kleine Probleme bei der Programmierung und hier besonders
bei der Benutzung des Variablentyps.
Bei 16 bit könnte ich ja int-Variable benutzen.
Mit den dont'care Fällen geht dies ja dann nícht mehr.
und als Ausgabe habe ich ja Strings.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für Don't-Care brauchst Du zwei 16-Bit-Variablen. Eine mit Maske
(gesetzes Bit = X) und eine mit dem eigentlichen Wert, der bei
nichtgesetztem Bit der Maske durch diese "hindurchscheint".

Autor: GEO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Rufus,
also extra Maske für die Don't care Fälle.
(mit z.B.: 0 = kein don't care und 1 = don't care Fall und diese
Maske dann mit den anderen 16 Bit verodern)
Bei don't care Fall ändere ich dann Bitposition in Dontcare-Maske und
bei festem 0 oder 1 setze ich dann entsprechenden Wert in meine 2te 16
Bit Variable?

Wie realire ich dann aus meinen 2 Variablen die Displayausgabe?
Benötige dazu ja Strings (Programmierung in C!)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dürfte grob so gehen:
unsigned int wert;
unsigned int maske;
int i;

wert = 0xA55A;   // 1010010110100101
maske = 0x1234;  // 0001001000110100
                 // 101X01X110XX0X01

// sizeof (int) == 2 wird im folgenden 
// implizit angenommen
for (i = 15; i > -1; i--)  
{
  if (maske & (1 << i))
    putchar('X');
  else
    putchar(wert & (1 << i) ? '1' : '0');
}

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.