	ORG		0x004		; interrupt vector location
	movwf		w_temp		; save off current W register contents
	swapf		STATUS,w	; move status register into W register
	clrf		STATUS		;bank 0 - IRP,RP1,RP0 torölve
	movwf		status_temp	; save off contents of STATUS register
	movf		PCLATH,w	; move pclath register into W register 
	movwf		pclath_temp	; save off contents of PCLATH register

	clrf		PCLATH		; Ha mar egyszer lementettuk, hasznaljuk is ki!
					; A megszakitasoknak innentol a 0. lapon kell lenniuk!
					; ( vagy az ugrasok elott lapozni is kell )

	movf	FSR,W
	movwf	FSRsave			; Hasznalsz indirekciot a megszakitason kivul-belul? Minek menteni?
					; De ha hasznalod, akkor feltetlenul!					

	banksel PIR1		;bank0
	btfsc	PIR1,SSPIF	; <PIR1,3> Is this a SSP interrupt?	
	goto	I2C_ISR		; Az SSP okozta a megszakitast, irany feldolgozni!

I2C_ISR_vege:

	btfsc	INTCON,INTF		;<INTCON,1> PORT A2 (JelA) okozta a megszakitást
	goto	INTF_megszakitas	; Ha az INTF okozta a megszakitast, irany feldolgozni!

INTF_vege:

;	banksel	FSRsave			; Ezeket a regisztereket erdemes a 70-7F tartomanyba tenni es 
					; akkor nem kell bankvaltas ( FSRsave, pclath_temp, status_temp, w_temp )

	movf	FSRsave,W
	movwf	FSR	
	movf		pclath_temp,w	; retrieve copy of PCLATH register
	movwf		PCLATH		; restore pre-isr PCLATH register contents	
	swapf		status_temp,w	; retrieve copy of STATUS register
	movwf		STATUS		; restore pre-isr STATUS register contents
	swapf		w_temp,f
	swapf		w_temp,w	; restore pre-isr W register contents
	retfie				; return from interrupt


;---------------------------------------------------------------------------------------------------------------------
; Az egyes megszakitasi feladatokat kiszolgalo reszek

I2C_ISR:
	bcf	PIR1,SSPIF	; A flag-et a feldolgozas megkezdesekor torolni! 
	
	; PIR1 es PORTB egy bankban vannak? Ki tudja?
	banksel	PORTB
	bcf	PORTB,5		;LED bekapcsolása	( 

	call	I2C_kezeles	;Volt SSP interrupt! ( Mennyi ideig vonja el ez az eljaras a tobbi funkciotol a processzort? )
				; A nyolcszintu stack-bol egyet visz a megszakitas, ez meg megegyet. Nem sok ez?

	banksel RXBuffer	; A kezelo nem valt at masik bankra? 
	movf	RXBuffer+0,W	;parancs
	; Pstatus egy bankban van RXBuffer-rel?
	banksel	Pstatus
	movwf	Pstatus		;"Pstatus"-ban tárolása

	goto	I2C_ISR_vege:	; Megszakitasi vonal vege 

;---------------------------------------------------------------------------------------------------------------------

INTF_megszakitas:

	bcf	INTCON,INTF	; A flag-et a feldolgozas megkezdesekor torolni! 

	banksel	PORTC		; soha nem tudhatjuk, elotte melyik bank volt ( vagy jobban oda kell figyelni! )

	btfss	PORTC,JelB
	goto	Elore
	goto	Hatra

;	btfsc	PORTC,JelB	; Szerintem így egyszerubb lenne, de a masik is jo megoldas
;	goto	Hatra

Elore:
	incfsz	T3L,f		; Egy nehany snipetet erdemes lenne atnezned, hogy ezt is egyszerubb legyen leirni
	goto	Ki_szamol	; http://www.pic-projects.net/index.php?option=com_content&view=article&id=53:multi-byte-increment&catid=38:arithmetic&Itemid=57
	incfsz	T3M,f		
	goto	Ki_szamol
	incf	T3H,f
	goto	Ki_szamol

Hatra:				
	decf	T3L,f		
	movf	T3L,w		
	xorlw	D'255'
	btfss	STATUS,Z
	goto	Ki_szamol
	decf	T3M,f
	movf	T3M,w
	xorlw	D'255'
	btfss	STATUS,Z
	goto	Ki_szamol
	decf	T3H,f
	goto	Ki_szamol

Ki_szamol:

	goto	INTF_vege	;így gyorsabb, ha egyszerre van

; A megszakitasi eljarasok vege
;---------------------------------------------------------------------------------------------------------------------
