www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu ADDAT


Autor: Klaus Rheine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bin Anfänger auf dem Gebiet Mikrocontroller und hätte mal eine Frage
zum SFR ADDAT. Habe hier zwei Programme in C-Code vorliegen, in dem mit
Hilfe des AD/Wandlers Werte über einen Temperaturfühler gemessen werden
sollen und mit dem Messergebnis weitergearbeitet werden soll.

Besitzt der Digitalwert in ADDAT keinen bestimmten Datentyp?

In einem Programm wird eine int-Variable "T" erzeugt und dem Register
ADDAT zugordnet.
In dem anderen wird die gleiche Variable jedoch vom Typ char erzeugt
und ADDAt zugewiesen.
Kann man das das so einfach machen??

Würde mich über Hilfe freuen.

Mit freundlichen Grüssen
Klaus Rheine

Autor: T.Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du uns noch sagst was für ein prozessor dann können wir vielleicht
Aussagen machen

Gruss (an die Glaskugel)

Autor: Klaus Rheine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Aufgabe soll mit einem 80515 gelöst werden.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sagt denn das Datenblatt des Prozessors über das SFR?

Autor: tex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schööööner prozessor.
Was willst Du mit dem Wert aus dem ADDAT machen?
Wenn Du nur die 8 Bit ausliest, reicht es Dir vieleicht, das Ergebnis
der Wandlung anzuzeigen, dann reicht Dir ein Char.
Wenn Du das Ergebnis z.B. benutzen willst, um die Einstellungen für
Deine Offsetts zu berechnen, sollte es schon INT sein.

Autor: Klaus Rheine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gehen wir mal von einem Temperaturfühler aus.
Dort will ich prüfen, ob der Wert in ADDAT größer 0 ist.
Ist dies der Fall, soll der Wert als zweistellige Dezimalzahl
ausgegeben werden. Zur Ausgabe dient eine Prozedur out_char(z), die als
Parameter ein ASCII Zeichen erwartet.

Wie gehe ich dann im Programm vor?

int wert;
char ausgabe,z;

wert=ADDAT;
if(wert>0)
  {
    ausgabe=ADDAT //???
    z=ausgabe/10   //Zehner-Stelle
    z=z+0x30  //ASCII Ziffer
    out_char(z);

    .
    .
    .
   }

Kann ich ADDAT in der if-Schleife einem char-Wert zuweisen, obwohl ich
dem Register vorher int zugewiesen habe?

Autor: hmk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>...obwohl ich dem Register vorher int zugewiesen habe?

Umgekehrt:
Du weist ja nicht dem Register ADDAT einen Wert oder Typ zu (macht
wenig Sinn) sondern Du weist den Inhalt von ADDAT einer Variablen zu,
was kein Problem ist, solange die jeweilige Variable einen Wertebereich
hat, der größer oder gleich dem Wertebereich von ADDAT ist. Ich hoffe,
das löst das Verständnisproblem.

Gruß

Johnny

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.