Ich hab da mal eine prinzipfrage:
Ich lese mit meinem Pic16f84 zwei Codierschalter aus beide geben binär
0-9 aus :
|- | -|
|0 |0|
|+|+|
Mit den beiden Codiererern gehe ich auf einen 8bit Port.
ich möchte jetzt diesen binären (Müll) in die hexwerte für dezimal 0-99
umwandeln. Müll deshalb weil mir ja jeweils A-F fehlen und deshalb
die Zahlen dezimal 10-15 26-31 42-47 ... nicht vorhanden sind.
HILFE wie kann ich diesen Müll in vernünftige Werte verwandeln
(ein Prinzip würde mir reichen) Ich schreibe in Assembler.
Also ich hab das Problem relativ schnell gelöst dank einem Tip von nem Kumpel. Die Umwandlung läuft so:
die 2mal 4bit des Codierers holen und in einem Speicher ablegen (CODE)
CODE ins Arbeitsregister und als EINER speichern
die höheren 4bit von EINER löschen (durch Verknüpfung & 0F )
und wieder speichern
CODE ins Arbeitsregister und als ZEHN speichern
ZEHN swappen also untere 4bit mit oberen 4bit tauschen
ZEHN mit 0F & Verknüpfen (um die unteren 4 bit zu löschen)
ZEHN um 3 Stellen nach links rotieren und in ZEHN1 speichern
ZEHN um 1 Stelle nach links rotieren und in ZEHN2 speichern
ZEHN1 und ZEHN2 addieren und in ZEHNER speichern
(die letzten drei Zeilen stellen eine multiplikation mit 10 dar)
ZEHNER und EINER addieren fertig.
danke auch an den Helfer vom Board
gruß Christian
PS: Ich versuch den Code anzuhängen
Lesezeichen