Vlastní knihovna v BASCOM pro ovládání GLCD s řadičem KS0108

Zdravim všechny,predem chci napsat ze se programovat v bascomu teprve ucim…
z duvodu nemoznosti pouzit standartni knihovnu glcdks108.lib (nechce fungovat spolehlive nad 8MHz a control port je slozen ze dvou portu konkretne z portD + portA) a navic problematice ovladani lcd zatim priliz nerozumim tak shanim pomoc ohledne vytvoreni vlastni knihovny v bascomu pro ovladani glcd s radicem ks0108.
informace jak ridit tohle lcd cerpam z elektronika.kvalitne.cz/ATMEL/ne … S0108.html ale stale se mi nedari to rozchodit. Zde je nastaveni pinu:[code]Config Portc = Output
Config Pind.1 = Output
Config Pind.2 = Output
Config Pind.3 = Output
Config Pina.3 = Output
Config Pind.6 = Output

Dataport Alias Portc
Rs Alias Pind.1
Rw Alias Pind.2
E Alias Pind.3
Cs2 Alias Pina.3
Cs1 Alias Pind.6[/code]
bohuzel jina konfigurace pinu neni mozna, vyvod Rst je trvale pripojen na +5V
zde jsem se pokusil o kod pro init:[code]Sub Ks_init()

Waitms 200
Reset Dataport
Reset Rs
Reset Rw
Reset E
Reset Cs1
Reset Cs2
Waitms 5

Set Cs1
Set Cs2
Reset Rs
Reset Rw

Waitus 42
Dataport = 192 'nastaveni Y posuv
Gosub Zapis

Waitus 42
Dataport = 64 'nastaveni X adresy
Gosub Zapis

Waitus 42
Dataport = 184 'nastaveni stranky pameti , radek 000
Gosub Zapis

Waitus 42
Dataport = 63 ’ zapnuti lcd
Gosub Zapis

Reset Cs1
Reset Cs2
End Sub[/code]

a zde se pokousim zapsat pixel v souradnicich x,y[code]Sub Ks_pset(lx As Byte , Ly As Byte , Lz As Byte)
Local Xlcd As Byte , Ylcd As Byte , Zlcd As Byte

If Lx <= 63 Then
Xlcd = 64 + Lx
Else
Xlcd = 1 + Lx
End If
Ylcd = 192 + Ly
Zlcd = Lz
If Xlcd < 64 Then Xlcd = 64
If Xlcd > 127 Then Xlcd = 127
If Ylcd < 192 Then Ylcd = 192
If Ylcd > 255 Then Ylcd = 255
If Ylcd > 0 Then Zlcd = 255

Reset Rs
Reset Rw

Gosub Csko
Dataport = Xlcd
Gosub Ecko

Dataport = Zlcd
Gosub Ecko
Set Rs

Gosub Csko
Reset Rs
Dataport = Ylcd
Gosub Ecko

Dataport = Zlcd
Gosub Ecko
Set Rs
Set Rw
Reset Cs1
Reset Cs2

Csko:
If Lx < 63 Then
Set Cs1
Reset Cs2
End If
If Lx > 63 Then
Reset Cs1
Set Cs2
End If
Return

End Sub

Ecko:
Set E
Waitus 3
Reset E
'Waitus 3
Return[/code]
ani jedno ani druhe samozrejme nefunguje jen jsem to tak zkusil jak jsem to pochopil z tech stranek. muzete mi s tim nekdo pomoct?
diky vsem

:arrow_right: administrator: přesunuto z "Elektronika s mikrokontroléry, procesory"

:arrow_right: administrator: přejmenováno z "ovladani ks0108 + bascom"

:arrow_right: administrator: příspěvek byl upraven

Config Pind.1 = Output Toto ještě jde, ačkoliv raději bych napsal Config Pord.1 = Output

Rs Alias Pind.1 Ale toto je chyba.

Má být

Rs Alias Portd.1 Zapisujeme do PORTx, ne do PINx.

Zkusil bych nejprve celý program v asm z tvého odkazu přeložit v Avrstudiu a vyzkoušet.

Pokud funguje, použil bych procedury z něho v Bascomu jako vložený ASM kód.
Nepřekládal bych je do Bascomu.

mas pravdu asi zasadni problem byl v tech portech, nechapu ze sem to nezkontroloval, ted uz to neco dela, jen bych jeste potreboval vedet co udelat kdyz chci treba zapsat pixel do souradnice x , y (10 , 20) nebo (70 , 25) vubec jsem nepochopil tu tabulku instrukci. treba by mi stacil i odkaz na nejakou teorii ktera s tim souvisi. toho kodu co jsem napsal vyse si moc nevsimejte mam to ted stejne uplne jinak a je tam vic chyb nez jen ty porty.