ADC-Wandlung mit ATMEGA16. Weiterarbeiten mit 10Bit und ASM

Gast #313370
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
Gast #313373
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.