www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Inhalt eines Register aufs LCD anzeigen


Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle,

Ich muss erstmal sagen ich bin ein Einsteiger im Programmierung mit 
Atmega8. Ich schreibe gerade Vorwärtszählercode mit Anzeige auf dem LCD 
gesteuert durch tastendruck.Hab es mit LED erstmal simuliert alles lauft 
bis jezt richtig nur habe da ein problem und zwar:

nach Tastendruck wird ein Register incrementiert und ich weiß nicht wie 
den Inhalt von diesem Register auf mein den LCD anzeigen kann. Hab mich 
schon mit den lcd-routine und das ascii system vertraut gemacht.

Bin ratlos. Könntet ihr mir helfen?

danke schon mal

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit der Info kann dir keiner helfen

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Frage ist doch WAS willst Du da sehen.
Danach entscheidet sich welchen Weg Du gehen mußt.
Der HEX Wert wäre das Einfachste.
Das Byte zerstückeln in 2 Nibble. Jeweils 30h dazu addiert und Ausgeben.
ABER .... Das gilt nur für Zhalenwerte von 0 - 9 !!
Die Werte von A - F müüsen extra berechnet werden.

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bin ratlos. Könntet ihr mir helfen?

Du mußt schon wenigstens sagen, ob Du in Assembler oder sonstwie
programmierst (ich tippe mal auf Bascom ;-).

Autor: Mathias U. (munter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst Du schon irgendwas auf dem Display ausgeben?

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja du hast recht, ich probiere es noch mal.

aus diesem Problemausschnit asu den Tutorial sollte die Buchstabe "T" 
aufs Display anzeigt werde. ich habe das gleich Prinzip benutzt nur das 
den Wert, den ich anzeigen will ist im Register r17 und lauft von 0 bis 
255.

mit diesen Zeile:
ldi temp1, r17

geht es nicht.

.include "m8def.inc"

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18


           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten 
RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten 
RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen

           ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           loop:
           rjmp loop

.include "lcd-routines.asm"

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offenbar verwendest du die Routinen aus dem Tutorial.
Auf genau derselben Tutoriumsseite ist doch beschrieben, wie
man einen Wert aus einem Register ausgibt.

http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja habe ein kleines code aus dem Tutorial zur Anzeige von " test" 
probiert und es klappt und ich versteh aus das Code.

ich programmiere in Assembler mit AVR Studio und hab ein STK500 von 
Atmel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einsteiger wrote:
> ja habe ein kleines code aus dem Tutorial zur Anzeige von " test"
> probiert und es klappt und ich versteh aus das Code.
>
> ich programmiere in Assembler mit AVR Studio und hab ein STK500 von
> Atmel

Dann lies im Tutorium weiter. Weiter unten auf der Seite wird
genau das gezeigt, wonach du fragst.

Drück einfach auf den Link hier
http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Um Zahlen, die beispielsweise in einem Register gespeichert sind, 
ausgeben zu können, ist es notwendig sich eine Textrepräsentierung der 
Zahl zu generieren. Die Zahl 123 wird also in den Text "123" umgewandelt 
welcher dann ausgegeben wird. "

Ich verstehe nicht was damit gemeint ist.Textrepräsentierung? Ich kenne 
überhaupt nicht den Inhalt meines Register nur das der Zahl von 0 bis 
255 enthält!

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist so gemeint:

Wenn dein Register beispielsweise den Wert 136, dann muss eine 1, dann 
eine 3 und zuletzt eine 6 ausgegeben werden.

Du musst dir also eine Routine überlegen die Zahlen (vom Register) in 
einzelne Stellen zerlegt (Hunderter, Zehner, Einer).

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Einsteiger (Gast)

>Ich verstehe nicht was damit gemeint ist.Textrepräsentierung?

Das Stichwort heisst ASCII Kodierung.

http://de.wikipedia.org/wiki/ASCII

> Ich kenne
>überhaupt nicht den Inhalt meines Register nur das der Zahl von 0 bis
>255 enthält!

Den musst du auch nicht kennen, die Umwandlung rechnet das aus. Überleg 
mal. Deine Zahl von 0..255 wird in EINEM Byte gespeichert. Die Ausgabe 
braucht aber DREI ZEICHEN. Und genau dass muss die Umwandlungsfunktion 
leisten. Byte -> drei ASCII-Zeichen.

MFG
Falk

Autor: Einsteiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja danke ich versuche es

Danke an euch noch mal

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deswegen sagte ich ja die Ausgabe des HEX Wertes ist am einfachsten.
Außerdem kann man damit in Detenblättern schnell was anfangen.
Die dez. Werte müßtest Du dann oft wieder in HEX oder BIN umrechnen.
bei zB 38h im Regster wird daraus 03 und 08,
Danach 30h zu jeder Zahl dazu. Macht 33h und 38h.
Jetzt schau mal in die ASCI Tabelle rein !!

Autor: jack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>bei zB 38h im Regster wird daraus 03 und 08,
>Danach 30h zu jeder Zahl dazu. Macht 33h und 38h.

Und was macht der arme Kerl dann bei Registerinhalt ABh?
Da wirds dann für ihn eindeutig komplizierter, wie wenn er gleich 
dezimal
ausgeben würde.

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.