	list	 p=16f876
	#include p16f876.inc
#DEFINE EGY	   01001000B
#DEFINE	KETTO  00111011B	
#DEFINE HAROM  01011011B 
#DEFINE NEGY   01001101B  
#DEFINE OT     01010111B
#DEFINE HAT    01110111B
#DEFINE HET    01001010B
#DEFINE NYOLC  01111111B
#DEFINE KILENC 01011111B
#DEFINE NULLA  01111110B

#DEFINE K1  PORTC,3
#DEFINE K2  PORTC,2
#DEFINE K3  PORTC,1
#DEFINE K4  PORTC,0

	CBLOCK	20H
	SZAMLALO
	SZAMLALO1
	SZAMLALO2
	W_TEMP
	STATUS_TEMP
	PCLATH_TEMP
	DISP4
	DISP3
	DISP2
	DISP1

	EZRES
	SZAZAS
	TIZES
	EGYES
	EREDMENY
	ENDC

	ORG 3

	GOTO	START
	GOTO	INT

TABLA:
	ADDWF	PCL,F
	RETLW	NULLA
	RETLW	EGY
	RETLW	KETTO
	RETLW	HAROM
    RETLW   NEGY
    RETLW   OT
    RETLW   HAT
    RETLW   HET
    RETLW   NYOLC
    RETLW   KILENC

START:

	BANKSEL	TRISB

	MOVLW	000000001B
	MOVWF	OPTION_REG

	MOVLW	00000000B
	MOVWF	TRISB
	
    MOVLW   11110000B
    MOVWF   TRISC

	MOVLW	00000100B
	MOVWF	ADCON1

	BANKSEL	PORTB
	MOVLW	10001001B
	MOVWF	ADCON0

	MOVLW	0
	MOVWF	DISP1
	MOVLW	0
	MOVWF	DISP2
	MOVLW	0
	MOVWF	DISP3
	MOVLW	0
	MOVWF	DISP4

    BCF  K2
    BCF  K1
    BCF  K4
    BCF  K3

	MOVLW	10100000B
	MOVWF	INTCON

IDE:
	BSF		ADCON0,GO

NINCS_KESZ:
	BTFSC	ADCON0,GO
	GOTO	NINCS_KESZ

	BCF		STATUS,C
	RRF		ADRESH,F
	BCF		STATUS,C
	RRF		ADRESH,F
	

	MOVF	ADRESH,W
	MOVWF	EREDMENY
	CALL	SZTE


	MOVF	TIZES,W
	MOVWF	DISP3
	MOVF	EGYES,W
	MOVWF	DISP4
	
	MOVLW	10001001B
	MOVWF	ADCON0
	CALL	KESL



IDE1:
	BSF		ADCON0, GO

NINCS_KESZ1:
	BTFSC	ADCON0,GO
	GOTO	NINCS_KESZ1

	BCF		STATUS,C
	RRF		ADRESH,F
	BCF		STATUS,C
	RRF		ADRESH,F
	

	MOVF	ADRESH,W
	MOVWF	EREDMENY
	CALL	SZTE

	MOVF	TIZES,W
	MOVWF	DISP1
	MOVF	EGYES,W
	MOVWF	DISP2
	
	MOVLW	10000001B
	MOVWF	ADCON0

	CALL	KESL

	GOTO	IDE	



SZTE:
	CLRF    SZAZAS
	CLRF	TIZES
	CLRF	EGYES

PROBA_SZAZ:
	MOVLW	100
	SUBWF	EREDMENY,F
	BTFSS	STATUS,C
	GOTO	NEM_LEHET_100 
	INCF	SZAZAS
	GOTO	PROBA_SZAZ

NEM_LEHET_100:
	MOVLW	100
	ADDWF	EREDMENY,F

PROBA_TIZ:
	MOVLW	10
	SUBWF	EREDMENY,F
	BTFSS	STATUS,C
	GOTO	NEM_LEHET_10
	INCF	TIZES
	GOTO	PROBA_TIZ

NEM_LEHET_10:
	MOVLW	10
	ADDWF	EREDMENY,F

	MOVF	EREDMENY,W
	MOVWF	EGYES

	RETURN


	
	
INT:

	MOVWF    W_TEMP          ;Copy W to TEMP register
	SWAPF    STATUS,W        ;Swap status to be saved into W 
	CLRF     STATUS          ;bank 0, regardless of current bank, Clears IRP,RP1,RP0
	MOVWF    STATUS_TEMP     ;Save status to bank zero STATUS_TEMP register
	MOVF     PCLATH, W     ;Only required if using pages 1, 2 and/or 3
	MOVWF    PCLATH_TEMP     ;Save PCLATH into W
	CLRF     PCLATH          ;Page zero, regardless of current page



	BTFSC	K1
	GOTO	K2_JON
	BTFSC	K2
	GOTO	K3_JON
	BTFSC	K3
	GOTO	K4_JON

K1_JON:
	BCF		K4
	MOVF	DISP1,W
	CALL	TABLA
	MOVWF	PORTB
	BSF		K1
	GOTO	VEGE

K2_JON:
	BCF		K1
	MOVF	DISP2,W
	CALL	TABLA
	MOVWF	PORTB
	BSF		K2
	GOTO	VEGE

K3_JON:
	BCF		K2
	MOVF	DISP3,W
	CALL	TABLA
	MOVWF	PORTB
	BSF		K3
	GOTO	VEGE

K4_JON:
	BCF		K3
	MOVF	DISP4,W
	CALL	TABLA
	MOVWF	PORTB
	BSF		K4

VEGE:
	BCF		INTCON,T0IF
	MOVF     PCLATH_TEMP, W ;Restore PCLATH
	MOVWF    PCLATH         ;Move W into PCLATH
	SWAPF    STATUS_TEMP,W  ;Swap STATUS_TEMP register into W 
	                        ;(sets bank to original state)
	MOVWF    STATUS        ;Move W into STATUS register
	SWAPF    W_TEMP,F;Swap W_TEMP
	SWAPF    W_TEMP,W       ;Swap W_TEMP into W
	RETFIE



KESL:
	MOVLW	255
	MOVWF	SZAMLALO
    MOVLW   100     
	MOVWF	SZAMLALO1
;    MOVLW 	4      
;	MOVWF	SZAMLALO2
    
    
   
CIKLUS:
	DECFSZ	SZAMLALO
	GOTO	CIKLUS
	DECFSZ	SZAMLALO1
	GOTO    CIKLUS
;	DECFSZ	SZAMLALO2
;	GOTO    CIKLUS
     

    RETURN
   

	end     
