 LIST P=18F1320
 #INCLUDE "P18F1320.INC"
 CONFIG OSC=XT,  WDT=OFF, LVP=OFF, MCLRE = OFF, BOR=OFF, DEBUG=OFF, PWRT=off	
 config EBTRB=off,EBTR1=off,EBTR0=off,WRTD=off,WRTB=off,WRTC=off,WRT1=off,WRT0=off,CP0=off,CP1=off,CPB=off,CPD=off 
 ;kódvédelmek kikapcsolása
;4MHz-es kristállyal egy utasítást (amit 4 órajel periódus alatt csinál meg) 0,000001 sec alatt csinál meg.

	CBLOCK	0x00			;A 0x00 egy szabad memória rész kezdő címe
	VAR	
	VAR2		;várakozási idö a delay szubritunban
	ENDC

	ORG	0

;  D0..D3 --> RB0..RB3
;  R/S --> RB4
;  E --> RB5

;elöször a felsö 4 bitet kell elküldeni

START   
	CLRF PORTB
	CLRF LATB	
	MOVLW b'01111111' 
	MOVWF ADCON1
	MOVLW b'00000000'
	MOVWF TRISB 
	MOVWF TRISA
	CLRF LATB
	CLRF LATA
	CALL L_DELAY
	CALL LCD_INIT
	CALL HELLO_WORLD
	CALL L_DELAY
	BSF LATA,3

ENDLESS_LOOP
	GOTO ENDLESS_LOOP

LCD_INIT
	CLRF LATB
	BSF LATB,5  ;Enable 1
	CALL S_DELAY	
	BCF LATB,5  ;Enable 0
	CALL S_DELAY
	BSF LATB,1  
	CALL S_DELAY
	BSF LATB,5
	CALL S_DELAY
	CLRF LATB
	CALL S_DELAY
	RETURN	 

HELLO_WORLD
	CLRF LATB
	BSF LATB,2
	CALL ENABLE
	CALL S_DELAY		
	BSF LATB,3
	CALL ENABLE   ; 'H'   0100 1000


	MOVLW b'00000110'
	MOVWF LATB
	CALL ENABLE
	MOVLW b'000000101'
	MOVWF LATB
	CALL ENABLE    ;'e'   0110 0101

	MOVLW b'00000110'
	MOVWF LATB
	CALL ENABLE 
	MOVLW b'00001100'
	MOVWF LATB
	CALL ENABLE   ;'l'   0110 1100

	MOVLW b'00000110'
	MOVWF LATB
	CALL ENABLE 
	MOVLW b'00001100'
	MOVWF LATB
	CALL ENABLE   ;'l'   0110 1100

	MOVLW b'00000110'
	MOVWF LATB
	CALL ENABLE
	MOVLW b'00001111'
	MOVWF LATB
	CALL ENABLE  ;'o'   0110 1111

	RETURN



ENABLE   
	CALL S_DELAY
	BSF LATB,4   ;adat mód!!
	CALL S_DELAY
	BSF LATB,5  ;Enable 1
	CALL S_DELAY	
	CLRF LATB  ;Enable 0
	CALL S_DELAY
	CALL S_DELAY
	RETURN
	


S_DELAY
	MOVLW d'10'
	MOVWF VAR
VISSZA
	NOP
	DECFSZ VAR
	GOTO VISSZA	
	RETURN	
	
L_DELAY
	MOVLW d'5'
	MOVWF VAR
DEL
	MOVLW d'4'
	MOVWF VAR2
DEL2
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ VAR2,f
	GOTO DEL2
	DECFSZ VAR
	GOTO DEL
	RETURN
	

	END