
		list	p=16f887			  ; 16F886 can be used
		#include <p16f887.inc>		  ; processor specific variable definitions

	__CONFIG _CONFIG1, _CP_OFF &_CPD_OFF & _WDT_OFF & _BOR_ON & _PWRTE_ON & _HS_OSC & _LVP_OFF & _IESO_OFF & _FCMEN_OFF & _MCLRE_OFF
	__CONFIG _CONFIG2, _WRT_OFF & _BOR40V

T1Modulus	EQU	-.10000

	cblock	0xF0
W_save
STATUS_save
	endc

	org	0x000
	goto	Init

	org	0x004
INT:
	movwf	W_save
	swapf	STATUS,w
	clrf	STATUS
	movwf	STATUS_save

	btfss	PIR1,TMR1IF
	goto	INT_T1End

	bcf		PIR1,TMR1IF

	movlw	low(T1Modulus)
	movwf	TMR1L
	movlw	high(T1Modulus)
	movwf	TMR1H

INT_T1End:

	swapf	STATUS_save,w
	movwf	STATUS
	swapf	W_save,f
	swapf	W_save,w
	retfie

Init:
	banksel	ANSEL
	clrf	ANSEL
	clrf	ANSELH
	banksel	PIE1
	bsf		PIR1,TMR1IE
	banksel	TMR1L
	movlw	low(T1Modulus)
	movwf	TMR1L
	movlw	high(T1Modulus)
	movwf	TMR1H

	movlw	0x01
	movwf	T1CON

	bsf		INTCON,PEIE
	bsf		INTCON,GIE

Loop:
	goto	Loop

	end
