PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 8 Bit binär Wert



Thom24
05.10.2009, 08:14
Hallo

Ich arbeite mit einem PIC 16F877A und wandle einen analogen Wert von einem Temperatursensor in einen binären Wert. Der 16F877A wandelt den Wert in einen 10Bit Wert. Ich will aber nur einen 8 Bit Wert. Wie kann man so etwas lösen?

Vielen Dank für die Hilfe

oberallgeier
05.10.2009, 10:20
... PIC 16F877A und wandle einen analogen Wert ... in einen binären Wert ... 10Bit Wert. Ich will aber nur einen 8 Bit Wert ...Das Prinzip kann ich Dir erklären, das ist offensichtlich genauso wie bei den Atmel-Controllern.

Das gewandelte Datum steht als 10-Bit-Wert in 2 8-Bit-Registern. Wenn ich das Doc (DS39582B-page 128 © 2003 Microchip Technology Inc.) auf die Schnelle richtig lese, sind das die Register ADRESH und ADRESL - also das High-Byte und das Low-Byte. Im Register ADCON1 kannst Du wählen, wie Du das Wandlungsergebnis dargestellt haben willst: linksbündig oder rechtsbündig. WENN Du es linksbündig einliest, also ADFM = 0!, dann wird das MSB (das Byte mit den most significant bits) im ADRESH abgelegt. Und das wars dann - jetzt hast Du ganz einfach die "übrigen" Bits, die Du nicht mehr willst, im ADRESL - und um die kümmerst Du Dich nicht mehr. Nur noch ADRESH auslesen - und Du hast Dein 8 bittiges Datum.

Thom24
05.10.2009, 11:28
Ok

Und stimmt denn das Resultat noch mit dem Messwert überein? Oder gibt das dann einen total anderen Wert wenn einfach 2 Bits "abgeschnitten" werden?

oberallgeier
05.10.2009, 11:42
... stimmt denn das Resultat noch mit dem Messwert überein ...Klar. Das einzige was darunter leidet ist die Messgenauigkeit (stimmt nicht ganz - damit kann man natürlich auch schon etliches an Messrauschen ausblenden *ggg*). Das ist bei den binären Zahlen im Computer nicht anders als bei den dekadischen - mit denen wir seit der Schule rechnen. Stell Dir vor, Du hast auf Deinem Konto Millionen rumliegen. Na ja, vielleicht kein gutes Beispiel (ham wir ja alle nicht *schade*). Nimm Dein Konto: da interessiert Dich doch auch (nur), wieviel Euros drauf sind - um die Zent kümmern sich doch die wenigsten Leute. Und wenn neues Geld drauf kommt - ist auch nur interessant, ob jetzt an den oberen Stellen was steht. Drei hunderter und 1 tausender - der Rest trägt zur Euphorie nix mehr bei - und trotz allem stimmt das. Bei den binären Zahlen sind die Nullen und Einsen im Prinzip das, was die Ziffern von 0 bis 9 im dekadischen System darstellen.

Ist das so verständlich?

Thom24
05.10.2009, 11:45
Alles klar

Vielen Dank für die Antwort!

oberallgeier
05.10.2009, 11:57
Beispiel :

924(basis10), binär also 11 1001 1100, die Hälfte ist
462(basis10), binär also 01 1100 1110

Schneiden wir von den Binärzahlen immer die beiden letzten Stellen ab:

11 1001 1100
01 1100 1110 und gruppieren das neu (ist blos eine Angewohnheit von mir)

1110 0111 - das ist 231
0111 0011 - das ist 115 - ziemlich genau die Hälfte von 231 *ggg*

Also: ein bisschen leidet die Genauigkeit, weil bei dieser ganzzahligen Rechnerei IMMER abgerundet wird - thats live