; Pouziva podprogram Enable, ktery je ulozen v graphic.asm !!!
; (graficke podprogramky ho vyuzivaji dost casto, tak proto tam.
; Ale klidne si ho muzete presunout sem)
InitLCD:
; inicializace LCD
  ; Pred restartem
	SBI control_port_LCD,CS1	; obe strany displeje ted budou aktivni
	SBI control_port_LCD,CS2	; tzn. ze pokud pak spustime prikazy pro
; napr. zapnuti displeje, tak se zapnou oba

  ; restart LCD
	CBI control_port_LCD,RST	; Kontakt RST na log. "0"
	RCALL wait_10ms	; a nechame LCD v resetu 10ms, to by melo stacit

	SBI control_port_LCD,RST	; RST na log. "1" -> LCD se spusti
  ; cekat na dokonceni resetu
	LDI tmp,$00
	OUT IO_data_LCD,tmp	; data_port - bude vstupni port
	CBI control_port_LCD,RS	; RS=0 - instrukce
	SBI control_port_LCD,RW	; RW=1 - cteni	

wait_4_reset:
	RCALL signal_enable	; a potvrdime (neco jako ENTER pro LCD)
	SBIC data_port_in,4	; pokud se na tomto pinu "objevi" "0", pak
  ; (data byte 4)
	RJMP wait_4_reset	; je LCD po restartu a muze se pokracovat
	; Jinak se musi cekat na konec restartu
	RCALL wait_for_LCD	; kontrola, zda LCD jeste neco "nedela"
  ; Zaroven nam wait_for_LCD nastavil data_port jako vystupni -> nyni jednodussi
; LCD pripraven
; zapnout LCD
	CBI control_port_LCD,RS	; RS=0 - instrukce
	CBI control_port_LCD,RW	; RW=0 - zapis
  ; Bohuzel podprogram Is_Busy "rozhazi" RS a RW, musime prenastavit
  ; (navic pokazde chceme jinou instrukci, takze by nebylo vhodne
  ; nastavit na pokazde RS=0 a RW=0 )
	LDI tmp,0b00111111	; kod pro zapnuti LCD
	OUT data_port,tmp	; nahrajeme na vystupy
	RCALL signal_enable	; kod se zpracuje
	RCALL wait_for_LCD	
; Nyni se LCD zaplo

; Nastavime displej, tak, aby zacal zobrazovat od leveho horniho rohu
  ; (Resp. obe poloviny)

; Nastavime 0. radek (nejdrive se musi nastavit radek a pak Xova osa)
  ; Nevim proc, ale obracene mi to nefungovalo. Jestli na to nekdo prijdete
  ; tak mi napiste na k1ll3r@email.cz
	CBI control_port_LCD,RS	; RS=0 - instrukce
	CBI control_port_LCD,RW	; RW=0 - zapis
	LDI tmp,0b10111000
;                 ^^^^^-kod ; posledni 3 bity udavaji adresu (0-7)
	OUT data_port,tmp
	RCALL signal_enable
	RCALL wait_for_LCD

; Nastavime X adresu
;	CBI control_port_LCD,RS	; RS=0 - instrukce
;	CBI control_port_LCD,RW	; RW=0 - zapis
; Definovano o krok vyse. Nebylo meneno -> neni nutne nastavovat znovu
	LDI tmp,0b01000000
;                 ^^-kod ; dalsi bity urcuji adresu X (0-63)
	OUT data_port,tmp	; posleme kod na data_port
	RCALL signal_enable	; nastavime
	RCALL wait_for_LCD

;	LDI tmp,$FF
;	OUT IO_data_LCD,tmp		; a nastavime displej na zapis dat
  ; to uz ale udela wait_for_LCD

	RET	; Konec inicializace
; *-----------------------------------------*
; |                                         |
; *-----------------------------------------*