LIST P=16F628			;ez a progi azt csinálja, hogy ha az ra2-es láb pozitívabb, mint az ra1-es
				;akkor elkezd villogni az rb0-ás lábra rakott led
#INCLUDE "P16F628.INC"		

__CONFIG _XT_OSC&_WDT_OFF&_LVP_OFF&_PWRTE_ON&_MCLRE_OFF		

	CBLOCK 0x20		;16f628-nál 20-as memocímtől van szabad hely
				
	T2			;két regisztert itt hozom létre

	T1

	ENDC

	ORG	0
	GOTO	START
	ORG	4		;itt kezdődik a megszakítás
	BCF	PIR1,CMIF	;itt ezt lenullázom, hogy ha kilépek a megszakításból, akkor
	MOVLW	B'00000001'	;megint lehessen megszakítás
	MOVWF	PORTB		;itt a portb0-ás lábon egy ideig 1 lesz
	CALL	DELAY
	CLRF	PORTB		;törlöm portb-t
	CALL	DELAY		;ez itt nem fontos
	RETFIE			;kilépek

		
START	CLRF	PORTA
	MOVLW	B'00000101'	;beállítom a komparátorokat, így csak 1 komparátor fog működni, az RA1 RA2-es
	MOVWF	CMCON

	BSF	STATUS,RP0 	;BANK1
	MOVLW	B'00000110'	;a megfelelő lábakat bemenetnek állítom	
	MOVWF	TRISA		
	MOVLW	B'00000000'	;beállítom portb-t kimenetnek
	MOVWF	TRISB	
	BCF	STATUS,RP0 	;BANK0

	NOP			;10 us késleltetés az adatlap alapján (4 MHz-es kristálynál)
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP

	BCF	PIR1,CMIF	;megszakítással kapcsolatos

	BSF	STATUS,RP0

	BSF	PIE1,CMIE	;engedélyezem a komparátoros megszakítást
	
	BCF	STATUS,RP0

	BSF	INTCON,GIE	;engedélyezem a főmegszakításkapcsolót
	BSF	INTCON,PEIE	;ezt is engedélyezem(megszakítással kapcsolatos)

	CLRF	PORTB		;lenullázom portb-t

VISSZA:	
	NOP			;ez ide nem muszály a NOP-ok
	NOP
	NOP
	GOTO	VISSZA

DELAY:	MOVLW	d'150'		;ez egy késleltetés
	MOVWF	T1
DEL:	MOVLW	d'255'
	MOVWF	T2
DEL1:	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DECFSZ	T2,f
	GOTO	DEL1
	DECFSZ	T1,f
	GOTO	DEL
	RETURN
	END
