; Preruseni od pinu RB,0
; LED je pripojena na RA,1


	LIST P=16F628A, R=DEC
	INCLUDE<P16F628A.INC>

	__CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _XT_OSC

W_save	equ	20h	; zaloha pri preruseni
Sta_sav	equ	21h	; zaloha pri preruseni

#DEFINE	LED	PORTA,1


;-----------------------------------------------------------------------------------------------

	org	00h
	goto	INIT

	org	04h		; ulozeni hlavnich registru

	BCF	INTCON,RBIE	; zakázání přerušení od RB7/RB4

	movwf	W_save		; W
	movf	STATUS,W
	movwf	Sta_sav		; STATUS
	GOTO	PRERUS

;************************************************************************************************
;************************************************************************************************
;************************************************************************************************


INIT	MOVLW	B'00000111'	; typ komparatoru (off)
	MOVWF	CMCON
	BSF	STATUS,RP0	; nastaveni In / Out
	MOVLW	B'00000001'
	MOVWF	TRISA
	MOVLW	B'11111111'
	MOVWF	TRISB
	BCF	STATUS,RP0
	MOVLW	B'10001000'	; povoleni preruseni pouze od RB7/4
	MOVWF	INTCON

	NOP			; vlastni program !
	GOTO	$-1

;-----------------------------------------------------------------     Preruseni

PRERUS	BTFSC	INTCON,0
	GOTO	PRER0		; od RB7/4
	GOTO	PRERKON		; nezname = nic

PRER0	BCF	INTCON,0	; smazat priznak
	BTFSS	LED		; zjistit stal LED a zmenit
	GOTO	$+3
	BCF	LED
	GOTO	PRERKON
	BSF	LED
	GOTO	PRERKON


PRERKON	movf	Sta_sav,w	; Status
	movwf	STATUS
	swapf	W_save,f	; W
	swapf	W_save,w

	MOVLW	B'10001000'	; povoleni zpet pozadovanych preruseni
	MOVWF	INTCON

	retfie

;--------------------------------------------------------

	END