;**************************************************************************************
;                               PROCESSOR TIPUSMEGADÁSA
;**************************************************************************************
 LIST P=16F628A 
 #INCLUDE "P16F628A.INC" 

;**************************************************************************************
;                          BANKHIBAJELZÉS ELNYOMÁSA A FORDÍTÓBAN
;**************************************************************************************
 errorlevel -302 
 errorlevel -305 

;**************************************************************************************
;                                 KONFIGURÁCIÓS SZÓ
;**************************************************************************************
 __CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF 

;**************************************************************************************
;                                      MAKRÓK
;**************************************************************************************

;**************************************************************************************
;                                VÁLTOZÓK DEKLARÁLÁSA
;**************************************************************************************
	CBLOCK 0x20 ;ITT KEZDŐDIG A MEMÓRIA
T1,T2,T3	;
;	DISPLAY
	ENDC

LCD_RS EQU 0  	; PORTA 0 biten RS=0 parancs RS=1 Karakterkód
LCD_RW EQU 1	; PORTA 1 biten R/W=0 LCD írás, R/W=1 LCD memória olvasás
LCD_EN EQU 2 	; PORTA 2 biten 0= LCD tiltás, 1= engedélyezés
	
	ORG	0 
	goto	START

START
	CALL	MEMBANK0
	CLRF	PORTA
	MOVLW	0x07
	MOVWF 	CMCON 		;KOMPARÁTOROK KIKAPCSOLÁSA
	
	CALL	MEMBANK1

	MOVLW	B'00000000' ;PORT BEÁLLÍTÁSA 
	MOVWF	TRISA 
	MOVLW	B'00000000' 
	MOVWF	TRISB		;PORT BEÁLLÍTÁSA

	CALL	MEMBANK0
	movlw	D'255';30ms táp
	call	DELAY

	bsf		PORTA,3 ;LEd kigyújtás
	call lcdinit

Loop
	nop
	goto Loop

;**********************************************
;LCD_INIT
lcdinit
	movlw	D'255';30ms táp
	call	DELAY
	movlw	B'00111100'
	movwf	PORTB
	call	LCD_command
	movlw	D'1';39us
	call	DELAY
	movlw	B'00001111'
	movwf	PORTB
	call	LCD_command
	movlw	D'1';39us
	call	DELAY
	movlw	B'00000001'
	movwf	PORTB
	call	LCD_command
	movlw	D'2';2ms
	call	DELAY
	movlw	B'00000111'
	movwf	PORTB
	call	LCD_command
	return
;**********************************************
LCD_command
	bcf 	PORTA,LCD_RS
	bcf 	PORTA,LCD_RW
	bsf 	PORTA,LCD_EN	;Magasra állítjuk mert
	bcf 	PORTA,LCD_EN	;lefutó élre reagál.
	return

;**********************************************
LCD_ok
	CALL	MEMBANK1
	MOVLW	B'10000000' ;PORT BEÁLLÍTÁSA A LCDBUSY JELHEZ
	MOVWF	TRISB		;PORT BEÁLLÍTÁSA
	CALL	MEMBANK0

	return
;**********************************************
DELAY						;Delay labelje
	MOVWF	T1				;T1 x 20 usec
;	return
DEL
	MOVLW	d'2'
	MOVWF	T2				;T2 x 16 usec
DEL1
	MOVLW	d'1'
	MOVWF	T3				;T3 x 12 usec
DEL2
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	T3,f			;Csökkenti a T3-at, addíg, amig nem nulla
	GOTO	DEL2			; mindig visszaugruk a DEL2-re, vagyis a sok NOP-ra
	DECFSZ	T2,f			;Ha már nulla, akkor ugyanez eljátszódik a T2-vel
	GOTO	DEL1
	DECFSZ	T1,f			;Majd a T1-el is
	GOTO	DEL
	RETURN					;Visszatér a DELAY szubrutinból

 #INCLUDE "BANK.INC" 

	END 
