mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Selbstdef.Zeichen


Autor: Patrick Schnotalle (pepper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Durch das Datenblatt hab ich das bis jetzt so verstanden,so 
funktionierts aber leider noch nicht.Das ist nur die Definition-Habs dnn 
wie ein normals ASCII Zeichen von Adresse 00 versucht aufzurufen,auf was 
muss ich denn noch achten???(die hilfe wenns geht auch in assembler)

SELBSTDEF       mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #000h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #001h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #002h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #003h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #001h, R11
              call      #SEND
              mov       #1, R10
              mov       #005h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #005h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #00Eh, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #006h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #004h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

               mov       #1, R10
              mov       #004h, R11
              call      #SEND
              mov       #1, R10
              mov       #007h, R11
              call      #SEND


              bis.b           #BIT0, &P3OUT
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              mov       #1, R10
              mov       #00h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

              ret

Autor: Patrick Schnotalle (pepper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würd gern wissen aus welchen Grund das nicht funktioniert stimmt 
wenigstens das grundprinzip oder muss man sowas schon ganz anders 
aufbauen???

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast ein Problem. Deine Fragestellung ist vollkommen konfus!
Also erstmal tief durchatmen, nachdenken und dann das Problem 
darstellen. Von Anfang an.

Welcher Controller?
Welches Display?
Welche Schaltung?
Was soll gemacht werden?
Etc.

MFG
Falk

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du letztens den Hinweis auf das Datenblatt beherzigt hast, sollte 
es ja eigentlich kein Problem sein, anhand des dort dargestellten 
Beispiels ein selbstdefiniertes Zeichen zu erstellen. Hast Du das 
Beispiel im Datenblatt auf der zweiten Seite denn mal ausprobiert? Du 
musst immer erst die CG-RAM-Adresse setzen und im nächsten 
Schreibvorgang die Display-Daten für die ausgewählte Pixelzeile 
schreiben.

Ich will jetzt nicht versuchen, mich durch den Assembler-Code 
durchzuwursteln, auch weil es nicht viel bringen dürfte, da er 
unvollständig ist.

Wenn Du bei der Definition der Zeichen folgende Hinweise beachtest, dann 
müsste es funktionieren:
1. Es wird für jede Pixelzeile inkl. Cursorzeile ein Schreibvorgang 
benötigt, also insgesamt 8.
2. Die Adresse einer Pixelzeile im CG-RAM setzt sich aus der Adresse des 
Zeichens (0x00...0x07) und der Nummer der Zeile (0..7, von oben gesehen) 
zusammen. Insgesamt besteht die Adresse einer Zeile aus 6 Bit, wobei die 
drei höherwertigen die Adresse des Zeichens sind und die niederwertigen 
drei die Nummer der Zeile.
3. Beim Schreiben einer CG-RAM-Adresse müssen (wie beim Schreiben einer 
DD-RAM-Adresse) das RS- und das R/W-Signal "0" sein.
4. Das Bit Nr. 7 im Adressbyte muss zum Setzen einer CG-RAM-Adresse "0" 
und das Bit Nr. 6 "1" sein. Also wenn im Zeichen mit der Adresse "0x01" 
die dritte Zeile geschrieben werden soll, dann lautet das Adressbyte 
(mit Leerstellen, um die einzelnen Blöcke zu verdeutlichen) "01 001 
010", wobei "01" die Bits darstellen, die dem Display-Controller 
mitteilen, dass eine CG-RAM-Adresse geschrieben werden soll. Das 
folgende "001" ist die Adresse des Zeichens, das definiert werden soll. 
"010" ist die Nummer der Zeile, also 0x02 für die dritte Zeile (die 
erste ist 0x00).
5. Nach dem Setzen der Adresse müssen im nächsten Schreibvorgang die 
Daten für die Pixelzeile geschrieben werden (RS = "1" und R/W = "0"). Ob 
CG-RAM- oder DD-RAM-Daten geschrieben werden, hängt nur davon ab, auf 
welchen Speicher der letzte Adressierungsvorgang bezogen war.
6. Zum Schreiben der nächsten Pixelzeile muss wieder erst die Adresse 
wie unter 3. und 4. beschrieben gesetzt werden. Dann wird die nächste 
Pixelzeile geschrieben usw...

Autor: Patrick Schnotalle (pepper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der Definition dieses Zeichens müsste ja hin hauen...hab deine 
Anweisungsschritte soweit befolgt...
Aber der Aufruf funktioniert irgendwie nicht...
hab dann versucht das Zeichen mit:  darzustellen

                 call            #SELBSTDEF    ;aufruf der 
definition(oben)
              bis.b     #BIT0, &P3OUT
              mov       #1, R10
              mov       #000h, R11
              call      #SEND
              mov       #1, R10
              mov       #000h, R11
              call      #SEND
              bic.b     #BIT0, &P3OUT

                  ...
muss ich da noch was anderes beachten?
(aber auch andere normal ASCII zeichen stellts nach dem 
Definitionsaufruf nicht dar...)


Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst erst eine DDRAM-Adresse setzen, bevor Du ein Zeichen ausgibst. 
Wenn Dein Programm das nicht tut, dann kommt auch nix vernünftiges raus, 
weil der Display-Controller dann immer noch im CG-RAM rumeiert.

Autor: Patrick Schnotalle (pepper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke... Funktioniert endlich...

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.