	LIST P=16F877A
 	#INCLUDE "P16F877A.INC"
	ERRORLEVEL 0, -302  ; suppress bank selection messages
 	__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_LVP_OFF

	CBLOCK	0x20
		KI
		MENNYIT
		M
		M2
		M3
		X
		Y
		T
		T1
		T2
		SZ
		FUTAS
		W_MENT
		STATUS_M
		HANYADIK
		ADAT
		BILL
	ENDC

	ORG	0

	GOTO	START

	ORG 4

	MOVWF	W_MENT		;W és STATUS mentése
	MOVFW	STATUS
	MOVWF	STATUS_M

	BCF  	INTCON,INTF	;Interrupt törlése

	INCF	HANYADIK,f	;Növeljük a pozíció jelző regiszter értékét
						;Ezzel fogjuk majd tudni megnézni, hogy éppen milyen adat jön.

	MOVFW	HANYADIK
	XORLW	D'1'

	BTFSC	STATUS,Z
	GOTO	KILEP

	MOVFW	HANYADIK
	XORLW	D'10'

	BTFSC	STATUS,Z
	GOTO	KILEP

	MOVFW	HANYADIK
	XORLW	D'11'

	BTFSC	STATUS,Z
	GOTO	KILEPKESZ

	INCF	ADAT,f

	RRF		ADAT,f

	GOTO	KILEP

KILEPKESZ

	MOVLW	D'255'
	MOVWF	BILL

KILEP

	MOVFW	STATUS_M	;W és STATUS visszaállítása
	MOVWF	STATUS
	MOVFW	W_MENT

	RETFIE

START

	CLRC	;C flag (túlcsordulás) törlése

	BCF 	STATUS,RP1
	BSF		STATUS,RP0

	MOVLW	0x06			
	MOVWF	ADCON1

	MOVLW	B'00011111'
	MOVWF	TRISA	

 	MOVLW	B'00000000'
	MOVWF	TRISD

	MOVLW	B'00000000'
	MOVWF	TRISC

	MOVLW 	B'00000001'  ;Betöltjük az akksiba a TRISB-be valót
  	MOVWF 	TRISB   ;Beletöltjük az 0. PORTB bemenet lesz 

	BCF		OPTION_REG,INTEDG	;Lefutó élre interruptol (1 = felfutó, 0 = lefutó él)
	BCF		OPTION_REG,7		;Felhúzó ellenállás

	BCF		STATUS,RP0		;BANK0
    BSF		INTCON,INTE		;Engedélyezzük az interruptot az INT0-ra
    BSF		INTCON,GIE		;General Interrupt Enable bitet 1-re állítva 

	MOVLW	D'0'

	MOVWF	FUTAS
	MOVWF	HANYADIK
	MOVWF	ADAT
	MOVWF	BILL

	GOTO	VEGE

VALT

	MOVLW	D'1'
	MOVWF	MENNYIT
	MOVLW	D'1'
	MOVWF	M2
	MOVLW	D'0'
	MOVWF	M3

	MOVLW	B'01000000' ; Display start line set
	CALL	KIIR
	MOVLW	B'10100001' ; ADC Reverse
	CALL	KIIR
	MOVLW	B'11000000' ; Normal COM0 - COM63
	CALL	KIIR
	MOVLW	B'10100110' ; Display Normal
	CALL	KIIR
	MOVLW	B'10100010' ; Set bias 1/9
	CALL	KIIR
	MOVLW	B'00101011' ; Booster off. Regulator, Follower on
	CALL	KIIR
	MOVLW	B'00100111' ; Contrast set
	CALL	KIIR
	MOVLW	B'10000001' ; Contrast set
	CALL	KIIR
	MOVLW	B'00010100' ; Contrast set
	CALL	KIIR
	MOVLW	B'10101100' ; No indicator
	CALL	KIIR
	MOVLW	B'00000000' ; No indicator
	CALL	KIIR
	MOVLW	B'10101111' ; Display on
	CALL	KIIR
	;MOVLW 	B'10100101' ;All Points On
	;CALL	KIIR

	MOVLW	D'1'
	MOVWF	MENNYIT
	MOVLW	D'1'
	MOVWF	M2

	CALL	ADATBE
	GOTO	VEGE

KIIR

	MOVWF	KI

	BTFSC	KI,7	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,7	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,6	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,6	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,5	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,5	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,4	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,4	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,3	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,3	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,2	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,2	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,1	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,1	;Kiírás ha nincs mit
	CALL NULLA

	BTFSC	KI,0	;Kiírás ha van mit
	CALL EGY
	BTFSS	KI,0	;Kiírás ha nincs mit
	CALL NULLA

	RETURN

EGY

	MOVLW	B'00001000'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001010'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001011'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001010'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001000'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	CALL	VAR

	RETURN

NULLA

	NOP
	NOP

	MOVLW	B'00001000'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001001'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	MOVLW	B'00001000'
	BTFSC  	M3,0
	ADDLW	B'00000100'
	MOVWF	PORTD

	NOP
	NOP

	CALL	VAR

	RETURN

VEGE

	MOVLW	B'10010000'
	MOVWF	PORTD
	CALL	VAR
	MOVLW	B'01100000'
	MOVWF	PORTD
	CALL	VAR

	BTFSS   PORTA,0
	GOTO	VALT

	BTFSS   PORTA,1
	CALL	VONAL

	BTFSS   PORTA,2
	CALL	FUT

	BTFSS	PORTA,3
	GOTO	TORLES

	BTFSC	BILL,7
	CALL	BILLENTYU

	CALL	SZOVEG

	GOTO	VEGE

VAR

	MOVLW	D'2'
	MOVWF	MENNYIT

VAR2

	MOVLW	D'2'
	MOVWF	M

VAR3

	NOP
	NOP

	DECFSZ	M,f
	GOTO	VAR3

	DECFSZ	MENNYIT,f
	GOTO	VAR2

	RETURN

VONAL

	MOVLW	B'10101010'
	CALL	KIIR

	RETURN

ADATBE

	MOVLW	B'11111111'
	MOVWF	M3

	RETURN

ADATKI

	MOVLW	B'00000000'
	MOVWF	M3

	RETURN

ABETU

	MOVLW	B'00000000'
	CALL	KIIR
	MOVLW	B'11111110'
	CALL	KIIR
	MOVLW	B'00010001'
	CALL	KIIR
	MOVLW	B'00010001'
	CALL	KIIR
	MOVLW	B'11111110'
	CALL	KIIR

	RETURN

EBETU

	MOVLW	B'00000000'
	CALL	KIIR
	MOVLW	B'11111111'
	CALL	KIIR
	MOVLW	B'11011011'
	CALL	KIIR
	MOVLW	B'11011011'
	CALL	KIIR
	MOVLW	B'11010011'
	CALL	KIIR

	RETURN

LBETU

	MOVLW	B'00000000'
	CALL	KIIR
	MOVLW	B'11111111'
	CALL	KIIR
	MOVLW	B'11111111'
	CALL	KIIR
	MOVLW	B'11000000'
	CALL	KIIR
	MOVLW	B'11000000'
	CALL	KIIR

	RETURN

OBETU

	MOVLW	B'00000000'
	CALL	KIIR
	MOVLW	B'01111110'
	CALL	KIIR
	MOVLW	B'10000001'
	CALL	KIIR
	MOVLW	B'10000001'
	CALL	KIIR
	MOVLW	B'01111110'
	CALL	KIIR

	RETURN

HBETU

	MOVLW	B'00000000'
	CALL	KIIR
	MOVLW	B'11111111'
	CALL	KIIR
	MOVLW	B'00011000'
	CALL	KIIR
	MOVLW	B'00011000'
	CALL	KIIR
	MOVLW	B'11111111'
	CALL	KIIR

	RETURN

FUT

	BTFSS	FUTAS,0
	GOTO	FUTBE

	BTFSC	FUTAS,0
	GOTO	FUTKI

	RETURN

FUTBE

	MOVLW	D'255'
	MOVWF	FUTAS

	GOTO	VEGE

FUTKI

	MOVLW	D'0'
	MOVWF	FUTAS

	GOTO	VEGE

SZOVEG

	BTFSS	FUTAS,0
	GOTO	VEGE

	CALL	HBETU
	CALL	EBETU
	CALL	LBETU
	CALL	LBETU
	CALL	OBETU

	RETURN

TORLES

	MOVLW	D'0'
	MOVWF	T

	MOVLW	D'0'
	MOVWF	PORTC

TORLES1

	CALL	ADATKI

	INCF	T,f

	MOVFW	T
	MOVWF	T2

	MOVFW	T2
	MOVWF	PORTC

	BTFSC   T2,3
	CALL	TORLESV

	MOVLW	B'10101111'
	ADDWF	T2,f

	MOVFW	T2
	CALL	KIIR

	MOVLW	B'00010000'
	CALL	KIIR
	MOVLW	B'00000000'
	CALL	KIIR

	MOVLW	D'128'
	MOVWF	T1

TORLES2

	CALL	ADATBE

	MOVLW	B'00000000'
	CALL	KIIR

	DECFSZ	T1,f
	GOTO	TORLES2

	GOTO	TORLES1

TORLESV

	BTFSS	T2,0
	RETURN

	GOTO	TORLESVEGE

TORLESVEGE

	CALL	ADATKI

	MOVLW	B'10110000'
	CALL	KIIR

	MOVLW	B'00010000'
	CALL	KIIR
	MOVLW	B'00000000'
	CALL	KIIR

	CALL	ADATBE

	GOTO	VEGE

BILLENTYU

	;MOVLW	B'10100101'
	;MOVWF	ADAT

	MOVFW	ADAT
	CALL	KIIR

	MOVLW	D'0'
	MOVWF	BILL
	MOVWF	HANYADIK

	MOVLW	0xAA
	MOVWF	ADAT

	RETURN

	END