Forum: Mikrocontroller und Digitale Elektronik 10bit ADC ADRESH & ADRESL 'zusammenführen'


von Mario (Gast)


Lesenswert?

Hallo!

Ich hätt mal eine Frage zur ADC beim PIC16F88:
Wie kann ich in Assembler die Werte von ADRESH und ADRESL zusammenführen 
(zB. bei left justified)? Steh grerade auf der Leitung!

MfG Mario

von Torsten B. (torty)


Lesenswert?

Bin zwar aus dem AVR Lager, aber ich bezweifel, dass ein PIC den Inhalt 
von zwei 8Bit registern in eines zusammenpacken kann.
Du muss Dir eine 16Bit Arithmetik besorgen oder ausdenken. Dann kannst 
Du mit dem ganzen Messwert rechnen.

von Ingo S. (schicki)


Lesenswert?

Hallo,

der C18 Compiler von Microchip kann das in einem Befehl machen.

ReadADC();

Beispiele:
      Wert_Anzeigen(ReadADC());
      Balkenanzeige(ReadADC());

Wenn Du noch ein Bespiel benötigst kannst du Dich gerne per Mail an 
info@schwabenplan.com melden.

VG
Ingo

von Facebook (Gast)


Lesenswert?

Der C18 bringt ihm doch garnichts

Vor dem Problem stand ich auch schon. Hab dann aber letztendlich nur 8 
bit verwendet..

von W.S. (Gast)


Lesenswert?

Mario schrieb:
> Wie kann ich in Assembler die Werte von ADRESH und ADRESL zusammenführen

Was verstehst du eigentlich unter "zusammenführen"?

Ich nehme mal an, daß du alle 10 Bit verwenden willst und daß du sie 
also in einer 16 Bit-Variablen speichern willst, die logischerweise 2 
Bytes Speicherplatz belegt. Also speicherst du ADRESH im höherwertigen 
Byte und ADRESL im niederwertigen Byte. Ist doch absolut easy.

Wie du mit 16 Bit Integer in Assembler rechnest, ist eine andere 
Angelegenheit. Da mußt du dir erstmal überlegen, was du mit dem 
ADC-Ergebnis überhaupt anfangen willst. Aber das mußt du mit jedem uC 
und in jeder Programmiersprache tun.

W.S.

von Klaus W. (mfgkw)


Lesenswert?

Seid ihr sicher, daß der TE überhaupt noch lebt?

von Sunny (Gast)


Lesenswert?

Ich habe daze auch eine Frage.

Wie rechnet man denn 16 Bit in Assembler.Der hat nur 8 bit register, 
also muss man zwei register verwenden.Und was dann?
Wenn ich zum Beispiel ADRESH in eine variable speichere und ADRESL in 
andere. Wie kann ich das Ergebnis dann als eine Balke auf dem LCD 
anzeigen? Ich habe schon eine Lib, die eine Balke anzeigen kann, aber 
die kann nur einen 8 bit Wert anzeigen.Wie kann man also einen 16 bit 
Wert damit anzeigen?

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.