Forum: Mikrocontroller und Digitale Elektronik Selbstdef.Zeichen


von Patrick S. (pepper)


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

von Patrick S. (pepper)


Lesenswert?

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

von Falk (Gast)


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

von johnny.m (Gast)


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...

von Patrick S. (pepper)


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...)


von johnny.m (Gast)


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.

von Patrick S. (pepper)


Lesenswert?

Danke... Funktioniert endlich...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.