Forum: Mikrocontroller und Digitale Elektronik ADC-Wandlung mit ATMEGA16. Weiterarbeiten mit 10Bit und ASM


von Michael (Gast)


Lesenswert?

Hi!

Ich betreibe zwei Analogports am ATMEGA16, und kann diese erfolgreich
einlesen. Nun hab ich einen 10-Bit großen Wert, den ich ja in zwei
Register, oder in den SRAM oder sonst wo einlesen kann. Wie kann ich
mit diesem Wert nun weiterarbeiten?
In C gibts dafür ja Variablen, und einfache Rechnungen, aber in
Assembler hänge ich gerade total fest. Ziel ist es einen Ausgang so
lange auf "1" zu lassen bis der Wert z.B. 500 erreicht hat.

Danke im voraus für eure Antworten

von C++ (Gast)


Lesenswert?

Hallo,
dann nimm doch einfach "C". Geht viel besser....

C

von Rahul (Gast)


Lesenswert?

Irgendwo gab es hier einen Thread "rechnen in Assembler" oder so
ähnlich. Suchen hilft.
Von ASM habe ich fast keine Ahnung (mir fehlen da ein paar Vokabeln...)

von ,,,, (Gast)


Lesenswert?

Du hast den 10-Bit Wert in zwei Registern stehen. Sagen wir, deine 500
steht in den Registern R10 und R11, wobei R10 das lowbyte enthält, und
R11 das highbyte. Außerdem entspricht (dezimal)500 (hexadezimal)0x1F4.
Du brauchst nun das lowbyte (also R10) nur mit 0xF4 zu vergleichen,
sowie das highbyte mit 0x01. Wenn beide kleiner sind, lässt du den
Ausgang auf 1, sonst setzt du ihn auf 0.

von Conlost (Gast)


Lesenswert?

Hallo,

ein Tutorial gibt es dort:

http://www.avr-asm-tutorial.net/

ab Seite 43 steht viel über Zahlenumwandlung mit Beispielen,
der Quellcode steht ab Seite 45.

Mir hat das sehr geholfen, meinen Dank an Gerhard Schmidt.

Es grüsst,
Arno

von Hannes L. (hannes)


Lesenswert?

In den ATMEL-Appnotes findet man auch allerhand Hinweise zur
16-Bit-Arithmetik.

...

von gerd (Gast)


Lesenswert?

@ C++
Ein Problem gegen ein anderes eintauschen, ist das der Vorschlag?

@ Arno
Dank angekommen und freundlich begrüsst ...

mfg
gerd

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.