Ich kenne mich mit 8051 Assembler leider nicht aus (nur AVR Assembler),
vondaher muss ich bei den Befehlen mehr oder weniger raten.
Allerdings stimmen da Defintiv ein paar Dinge nicht.
Verwendest du unter Bascom vorgefertigte Funktionen / Bibilotheken?
Wenn da dasselbe steht würde es mich schon arg wundern wenn das gehen
würde,
da fehlt doch so einiges bezüglich das Ansteuerung ;)
Du sagst das du das Display über einen 4 Bit breiten Bus ansprichst -
Sendest den Befehl für dasselbige aber platt an Port 1, was nur
Funktionieren kann wenn Port 1 Eins-zu-Eins mit dem Dataport vom Display
verbunden ist, was ja nicht der Fall ist.
In diesem Fall hier wird das Display nur sechs mal "0000"
zu sehen kriegen und dann noch zweimal "1000" hinterher.
Damit das ganze Funktioniert musst du 2 Befehle hintereinander schicken,
die jeweils die 4 unteren und oberen Bits (Nibbles) beinhalten:
Da ich wiegesagt keine Ahnung vom 8051er Assembler habe kann
ichs dir nur generisch schreiben, sollte sich mit der Befehlstabelle
und geringfügiger Hirnleistung aber ruckzuck übersetzen lassen:
1 | Schreiben:
|
2 |
|
3 | ; oberes nibble zuerst
|
4 | a sichern (also auf´n Stack schmeissen, in ein Register kopieren, whatever)
|
5 | a AND 00001111
|
6 | a an Port 1 schicken
|
7 | Pin E setzen
|
8 | nop
|
9 | Pin E löschen
|
10 |
|
11 | ; unteres nibble danach
|
12 | a wiederherstellen
|
13 | Oberes Nibble von a mit unterem Nibble tauschen (swap bei AVR)
|
14 | a AND 00001111
|
15 | a an Port 1 schicken
|
16 | Pin E setzen
|
17 | nop
|
18 | Pin E löschen
|
19 |
|
20 | ret
|
Für Timings und Befehle empfehle ich dir Google anzuwerfen und dir das
Datenblatt
für den HD44780 rauszusuchen, da findest du auf Seite 46/47 nochmal die
genauen Werte für den Controller in Form eines Diagramms zusammen mit
den Befehlsworten, also sehr praktisch das ganze.
Allerdings würde ich bezüglich des Controllers nochmal genau gucken,
oft heißt es nur "HD44780 compatible", dann sind Chips alá KS0070
und Konsorten verbaut, in dem die Timings nochmal nen Tick variieren
können.
Im Prinzip schadet es aber nicht zulange zu warten,
mein 8x2 Display ist anfangs auch mit Timings im
100er-ms-Bereich gelaufen, viel schlimmer gehts also kaum.
PS: Ein Fragezeichen pro Frage reicht!