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
Würd gern wissen aus welchen Grund das nicht funktioniert stimmt wenigstens das grundprinzip oder muss man sowas schon ganz anders aufbauen???
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
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...
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...)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.