16 Bit Eingabe per Taster (Display) mit don't care Fällen

Gast #318079
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
Gast #318080
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?
Gast #318081
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.
Gast #318083
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!)
Persönliche Seite #318084
Lesenswert?
• ▲
▼
Dürfte grob so gehen:
1
unsigned int wert;
2
unsigned int maske;
3
int i;
4

5
wert = 0xA55A;   // 1010010110100101
6
maske = 0x1234;  // 0001001000110100
7
                 // 101X01X110XX0X01
8

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

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