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


von GEO (Gast)


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

von David W. (Gast)


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?

von GEO (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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".

von GEO (Gast)


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!)

von Rufus Τ. F. (rufus) Benutzerseite


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
}

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.