ERRORLEVEL 2
LIST P=16F684
	#INCLUDE "P16F684.INC"
	__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BOD_ON& _PWRTE_ON & _MCLRE_OFF & _HS_OSC & _IESO_OFF & _FCMEN_OFF


;------------------------------------------------------------------------------
;VÁLTOZÓK:

COUNT1	EQU	0X20
CODES	EQU	0X21
HIGHER	EQU	0X22
LOWER	EQU	0X23
RS		EQU	0X24
COUNT2	EQU	0X25
COUNT3	EQU	0X26
COUNT4	EQU	0X27

	ORG 0x00

;------------------------------------------------------------------------------
;INICIALIZÁLÁS
	BCF	STATUS,RP1
	BCF	STATUS,RP0	;BANK0-ba lépünk
	BSF	OPTION_REG,7	;PULL-UP OFF (RA3)

;PORTC ÉS PORTA Digitális I/O-vá tétel

	MOVLW	0X07	;comparator off
	MOVWF	CMCON0
	BSF	STATUS,RP0	;Bank 1
	CLRF	ANSEL	;digital I/O
	MOVLW	0X00
	MOVWF	TRISC	;set RC<5:0> as outputs

	BCF	STATUS,RP0	;Bank 0
	CLRF	PORTC	;Init PORTA
	MOVLW	0X07	;comparator off
	MOVWF	CMCON0	;digital I/O
	BSF	STATUS,RP0	;Bank 1
	MOVLW	0X00
	MOVWF	TRISA	;set RA<1,0> as outputs RA<5,4,3,2> as Inputs
	BCF	STATUS,RP0	;Bank 0
	CLRF	PORTA

;---------------------------
;LCD INICIALIZÁLÁS
;INDÍTÁSHOZ
	BANKSEL	PORTC
	BSF		PORTC,4		;ENABLE OFF FIGYELNI KELL ÍGY LESZ KIKAPCSOLVA HA 5V-OT AD
	BCF		PORTC,5		;RS-T 0-RA KAPCSOLNI PARANCS MÓD PORTC5=RS
	BSF		PORTC,0
	BSF		PORTC,1
	BCF		PORTC,2
	BCF		PORTC,3
	CLRF	COUNT1		;SZÁMLÁLÓK TÖRLÉSE
	CLRF	COUNT2
	CLRF	COUNT3
	CLRF	COUNT4
	CLRF	RS
;várakozás
;AZ 1-NÉL AZAZ 5V-NÁL VAN KIKAPCSOLVA; A 6. ÉS 7. BIT NINCS HASZNÁLATBAN
LOOP1
	MOVFW	COUNT3
	XORLW	D'100'
	BTFSC	STATUS,Z
	GOTO	LOOP2
	INCF	COUNT3
	CALL	WAITING2
	GOTO	LOOP1
LOOP2
	CLRF	COUNT3
	CALL	WAITING
	INCF	COUNT2,F	;SORSZAM2 NÖVELÉSE 1-EL
	MOVFW	COUNT2		;SORSZÁM BETÖLTÉSE A WORKBE
	XORLW	D'3'		;3-MAL XOROLVA HA 3 AZ ÉRTÉKE XOROLVA 0-T AD
	BTFSC	STATUS,Z	;HA 3 AZ ÉRTÉK AKKOR A KÖVETKEZŐ UTASÍTÁST NEM UGORJA ÁT, HA HAMIS AKKOR ÁTUGORJA AZAZ 
;NEM ÉRTE EL MÉG EL A 3-AT

	GOTO	NEXT		;LÉNYEGÉBEN 3-SZOR ADJUK KI AZ UTASÍTÁST AZ LCD-NEK HOGY BIZTOSAN INDULJON
	GOTO	LOOP2
NEXT
	CLRF	COUNT2

;LCD TOVÁBBI INICIALIZÁLÁSA
;4 BITES ÁTVITELI MÓD BEÁLLÍTÁSA PARANCS 00100000
	BCF		PORTC,0		;FELSŐ 0.BIT 0
	BSF		PORTC,1		;FELSŐ 1.BIT 1
	BCF		PORTC,2		;FELSŐ 2.BIT 0
	BCF		PORTC,3		;FELSŐ 3.BIT 0
	CALL	WAITING

;2 SOROS MÓD BEÁLLÍTÁSA PARANACS 00101000 ELŐSZÖR A FELSŐ 4 BITET MAJD AZ ALSÓT
;FELSŐ 4 BIT
	BCF	PORTC,0		;FELSŐ 0.BIT 0
	BSF	PORTC,1		;FELSŐ 1.BIT 1
	BCF	PORTC,2		;FELSŐ 2.BIT 0
	BCF	PORTC,3		;FELSŐ 3.BIT 0
	CALL	WAITING
;ALSÓ 4 BIT
	BCF	PORTC,0		;ALSÓ 0.BIT 0
	BCF	PORTC,1		;ALSÓ 1.BIT 0
	BCF	PORTC,2		;ALSÓ 2.BIT 0
	BSF	PORTC,3		;ALSÓ 3.BIT 1
	CALL	WAITING

;KURZOR BEÁLLÍTÁS PARANCS 00001111
;FELSŐ 4 BIT
	BCF	PORTC,0		;FELSŐ 0.BIT 0
	BCF	PORTC,1		;FELSŐ 1.BIT 0
	BCF	PORTC,2		;FELSŐ 2.BIT 0
	BCF	PORTC,3		;FELSŐ 3.BIT 0
	CALL	WAITING
;ALSÓ 4 BIT
	BSF	PORTC,0		;FELSŐ 0.BIT 1
	BSF	PORTC,1		;FELSŐ 1.BIT 1
	BSF	PORTC,2		;FELSŐ 2.BIT 1
	BSF	PORTC,3		;FELSŐ 3.BIT 1
	CALL	WAITING
	GOTO	MAIN

;------------------------------------------------------------------------------
MAIN
;BEÍRÁS 2. SOR 00000 1/min
	BCF		RS,5
	MOVLW	B'11000010'	;2. SOR 3. KARAKTER
	MOVWF	CODES
	CALL	COMMAND
	CLRF	COUNT2
	BSF		RS,5		;KARAKTERÍRÁS
	MOVFW	COUNT2
	CALL 	TABLE1
	MOVWF	CODES
	CALL	COMMAND
	GOTO	MAIN
;------------------------------------------------------------------------------
;VÁRAKOZÁS 2 PARANCS KÖZÖTT

WAITING		;0,003SEC=3mSEC
	BCF		PORTC,4
	NOP
	NOP
	NOP
	BSF		PORTC,4
WAITING2
	MOVLW	0xB7
	MOVWF	COUNT1
	MOVLW	0x0C
	MOVWF	COUNT4
DELAY
	DECFSZ	COUNT1,F
	GOTO	$+2
	DECFSZ	COUNT4,F
	GOTO	DELAY
	RETURN

;------------------------------------------------------------------------------
;PARANCSKIADÁS
COMMAND
;HIGH-LOW
	MOVFW	CODES		;CODE LOW-BA KERÜL
	MOVWF	LOWER
	SWAPF	CODES,W		;MEGCSERÉLI A FELSŐ ÉS ALSÓ 4 BITET EREDMÉNY W-BEN
	MOVWF	HIGHER
	MOVLW	0X0F		;00001111 ÖSSZEÉSELI
	ANDWF	LOWER,F		;LOW 0000XXXX
	MOVLW	0X0F		;00001111 ÖSSZEÉSELI
	ANDWF	HIGHER,F		;HIGH 0000XXXX
	BSF		HIGHER,4	;ENABLE OFF MIATT 5V=OFF=LOGIKAI 1    0001XXXX
	BSF		LOWER,4		;SZINTÉL ENABLE OFF MIATT
	BTFSC	RS,5		;MEG KELL VIZSGÁLNI, HOGY KARAKTERÍRÁS (1) KELL E VAGY PARANCS (0) HA 0 AKKOR UGRIK
	GOTO	RSHIGH	
	GOTO	RSLOW


RSHIGH
	BSF		LOWER,5		;RS 1-RE ÁLLÍTÁS=KARAKTERÍRÁS
	BSF		HIGHER,5
	GOTO	WRITE

RSLOW
	BCF		LOWER,5
	BCF		HIGHER,5
	GOTO	WRITE

;ÉRTÉKEK KIKÜLDÉSE
WRITE
	MOVFW	HIGHER
	MOVWF	PORTC
	CALL	WAITING
	MOVFW	LOWER
	MOVWF	PORTC
	CALL	WAITING
	RETURN

;------------------------------------------------------------------------------

ORG	0X0600
TABLE1
	BCF		PCLATH,0	
	BSF		PCLATH,1
	BSF		PCLATH,2
	ADDWF	PCL,F
	RETLW	B'01100001'		;a



END

