Hi,
bei mir läuft das so hier ohne Probleme:
Code:
$regfile = "m8def.dat" 'Mega8
$crystal = 8000000
Declare Sub Lcdinit
Declare Sub Lcdwrite(byval Zeichen As Byte)
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.2 , Rs = Portd.3
Config Lcd = 20 * 4a
Waitms 100 'damit das LCD etwas Zeit bekommt um nach dem Einschalten empfangsbereit zu sein...
Call Lcdinit
Cls
do
.....
loop
Sub Lcdinit
Call Lcdwrite(&B00101100)
Call Lcdwrite(&B00001001)
Call Lcdwrite(&B00101000)
Call Lcdwrite(&B00000110)
Call Lcdwrite(&B00001100)
End Sub
Sub Lcdwrite(byval Zeichen As Byte)
' Höherwertiges Nibble setzen
If Zeichen.4 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.5 = 1 Then Portd.5 = 1 Else Portd.5 = 0
If Zeichen.6 = 1 Then Portd.6 = 1 Else Portd.6 = 0
If Zeichen.7 = 1 Then Portd.7 = 1 Else Portd.7 = 0
' Höherwertiges Nibble übertragen
Portd.2 = 1
Waitms 1
Portd.2 = 0
Waitms 1
' Niederwertiges Nibble setzen
If Zeichen.0 = 1 Then Portd.4 = 1 Else Portd.4 = 0
If Zeichen.1 = 1 Then Portd.5 = 1 Else Portd.5 = 0
If Zeichen.2 = 1 Then Portd.6 = 1 Else Portd.6 = 0
If Zeichen.3 = 1 Then Portd.7 = 1 Else Portd.7 = 0
' Niederwertiges Nibble übertragen
Portd.2 = 1
Waitms 1
Portd.2 = 0
Waitms 1
End Sub
Lesezeichen