mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 80C517A-Interrupt A/D-Wandler


Autor: Tina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Programm geschrieben welches die Analogwerte am Analogport 
4 mittels eines Interruot einliest. Die Spannung dabei liegt zwischen 
0-5V (diese sollen dabei einen Temperaturbereich zwischen 0-50°C 
entsprechen). Dabei werden in MD0 der Low-Byte des Wertes und in MD1 der 
High-Byte des Wertes gespeichert.
Mein Problem ist jetzt folgendes, mit welchem Befehl ist es möglich den 
eingelesenen Wert mit einem voreingestellten Wert zu vergleichen (also 
z.B. 40 °C). Wenn jetzt so zusagen der eingelesene Wert unter 40°C liegt 
dann soll Befehl 1 ausgeführt werden, ansonsten Befehl 2

Ich hoffe mein Problem ist verstanden worden. Wenn nicht einfach nochmal 
nachfragen, wenn noch Informationen gebraucht werden.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist MD0, MD1?
Welche Programmiersprache?

In Assembler vergleicht man mit SUBB oder CJNE.


Peter

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tina,

also ich würde ohne der Profi zu sein sagen:

Denn 10 Bit Wert in ein unsigned long i schieben.

i = ( MD1 << 8) + MD2;    --> ich hoffe das stimmt so aus dem Kopf

Schon sind die Werte MD1 und MD2 in i gespeichert.

Und nun einfach i vergleichen mit einem Referenzwert.

if(i < Ref.Wert)
{
    .......Befehl 1 etc.
}
else if (i > Ref.Wert)
{
     ......Befehl 1 etc.
}

Gruss

Thomas

Autor: aminox86 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Register MD0, MD1 .. MD7 gehören offensichtlich zur 
16/32-Bit-Recheneinheit des ´517.

Falls besagter Programmteil in Assembler geschrieben werden soll, bietet
sich beim Vergleich von Zahlen (beliebiger Länge), wie schon weiter oben 
erwähnt, die Subtraktion an, da sich dann die drei möglichen 
Fälle(gleich, größer, kleiner)ziemlich einfach unterscheiden lassen.

Das unten angegebene Programmfragment geht von der Annahme aus, dass 
sich das Wandlungsergebnis in MD0, MD1 und der Referenzwert sowie das 
Ergebnis im internen Datenspeicher gehalten werden.

  .
  .
  clr   c                ;cy wg. subtraktion löschen
  mov   a, low referenz
  subb  a, MD0
  mov   low_differenz, a
  mov   a, high_referenz
  subb  a, MD1
  mov   high_differenz, a
  jc    messwert_größer_als_referenz
  clr   a
  xrl   a, low_differenz
  jnz   messwert_kleiner_als_referenz
  clr   a
  xrl   a, high_differenz
  jnz   messwert_kleiner_als_referenz
kein_unterschied:
  mach_nichts..
messwert_kleiner_als_referenz:
  mach´s größer..
messwert_größer_als_referenz:
  mach´s_kleiner..

mfg

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port 4 ist kein Analogport. Nur P7 und P8.
Was rechnest du? Wie kommst du von 0..5V auf 40°C? Was für eine 
Rechenoperation führst du mit der MDU durch? Die hängt nämlich davon ab 
in welcher Reihenfolge du die Register beschreibst.
Vergleichen kann man mit CJNE.

Autor: Tina (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigt bitte, dass ich mich erst jetzt wieder melde, aber ich habe 
grad eine Menge um die Ohren.

@aminox86: Danke mal, das war genau das was ich gesucht habe.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.