;---------------------------------------------------------------------
;                     
;---------------------------------------------------------------------
;
;
;
;
;
;
;
;
;---------------------------------------------------------------------
;Beállítások:
;---------------------------------------------------------------------


        processor       18F258
        radix           dec
		#include 		P18F258.INC
        


;---------------------------------------------------------------------
;Memória helyfoglalások:
;---------------------------------------------------------------------

        CBLOCK


Timer1
Timer2
Timer3


        ENDC

;-------------------------------------------------------------------------------
; PORTA kivezetések
;
RS              equ     0                 ;RA0	 0= utasítás, 1= adat reg. választás
RdWr            equ     1                 ;RA1	 R/W=0 LCD írás, R/W=1 LCD memória olvasás
E               equ     2                 ;RA2	 0= LCD tiltás, 1= engedélyezés
;-------------------------------------------------------------------------------



START

		bcf	WDTCON,SWDTEN	



;---------------------------------------------------------------------
;Be-kimenetek beállítása:
;---------------------------------------------------------------------
			movlw	b'00000000'
			movwf	TRISA
			setf	TRISB
			clrf	TRISC
			


;---------------------------------------------------------------------
;LCD beállítása:
;---------------------------------------------------------------------
			clrf	PORTC
            bcf     PORTA,RS                     ; LCD parancs következik
            movlw   56                          ; 38h, 8 bit interface set
            rcall   Write
            rcall   Kesl                        ; Busy flag olvasását "helyettesíti"
            movlw   56
            rcall   Write
            movlw   6                           ; 06h, Entry mode set: increment
            rcall   Write
            movlw   12                          ; 0dh, Display on, cursor/blink off
            rcall   Write
            movlw   16                          ; 10h, Display/cursor shift: cursor
            rcall   Write
            movlw   1                           ; 01h, Display clear
            rcall   Write
            rcall   Kesl2                       ; Busy flag olvasását "helyettesíti"



;---------------------------------------------------------------------
;LCD-re kiíratás:   
;---------------------------------------------------------------------

Adatkiirasa
			bcf     PORTA,RS	 				;címezésbe kapcsolok
            movlw   1                           ; 01h, Display clear
            rcall   Write
			nop								
			movlw   129							;LCD elso sor elso karaktere 128
			rcall   Write
			bsf     PORTA,RS         			; adatot írok be
			movlw	'A'
			rcall	Write
			movlw	'B'
			rcall	Write


Időzito
decfsz Timer1
goto	Időzito
decfsz	Timer2
goto	Időzito

bsf	LATA,4

Időzito2
decfsz Timer1
goto	Időzito2
decfsz	Timer2
goto	Időzito2

bcf	LATA,4





;-------------------------------------------------------------------------------
;---------------------------- SZUBRUTINOK --------------------------------------
;-------------------------------------------------------------------------------
;
;-------------------------------------------------------------------------------
; LCD írás lépései:
; -----------------
;   1/   RS, R/W beállítása
;   2/   E=1
;   3/   adat kiküldés
;   4/   késleltetés (100us)
;   5/   E=0
;
Write
            movwf   PORTC
            bsf     PORTA,E
            rcall   Kesl100                     ; Busy flag olvasását "helyettesíti"
            bcf     PORTA,E
            return
;-------------------------------------------------------------------------------
Kesl100
							                       ; 100us késleltetés
	movlw	0x1F
	movwf	Timer1
Kes1
	decfsz	Timer1, f
	goto	Kes1
	nop
	nop
	return


;-------------------------------------------------------------------------------
Kesl2
													;2ms késleltetés
	movlw	0x8E
	movwf	Timer1
	movlw	0x02
	movwf	Timer2
Kesl21
	decfsz	Timer1, f
	goto	$+2
	decfsz	Timer2, f
	goto	Kesl21
	nop
	nop
	return

;-------------------------------------------------------------------------------
Kesl
            rcall   Kesl2
            rcall   Kesl2
            rcall   Kesl2
            rcall   Kesl2
            rcall   Kesl2
            return                              ; 5x2ms késleltetés
;-------------------------------------------------------------------------------







end






