	PROCESSOR 16F676
	#INCLUDE <P16F676.INC>

	__config	_CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON &  _WDT_OFF &	_INTRC_OSC_NOCLKOUT 

	#DEFINE	BANK0				BCF		STATUS,RP0	 
	#DEFINE	BANK1				BSF		STATUS,RP0	
	#DEFINE	INPUT_HALL_SENSOR	PORTA,5				 
	#DEFINE	OUT_TO_SWITCH		PORTC,4				  
 	#DEFINE	OUT_TO_CHECK		PORTC,0				 
    
	ORG		0x000
	GOTO	START

	ORG		0x004
	GOTO	INTERRUPT_EXEC
	RETURN

START					
	BANK0
	CLRF	PORTA
    CLRF	PORTC       		
    MOVLW	b'00000111'	;отключение компаратора        
    MOVWF	CMCON  
	CALL	0x03FF		;загрузить заводскую 
    BANK1  
	MOVWF	OSCCAL     	;калибровку в процессор
    MOVLW	b'11101110'	;RC0,RС4 - выход
    MOVWF	TRISC
    MOVLW	b'11111111'	;RА0..RА5 - входы
    MOVWF	TRISA
	MOVLW	b'00100000'	;разрешаю прерывания от входа RА5
    MOVWF	IOCA
    MOVLW	b'11100000'	;AN5,AN6,AN7 - аналоговые входы
    MOVWF	ANSEL       	
    MOVLW	b'10000000'	
    MOVWF	OPTION_REG
	MOVLW	b'00000001'	;разрешаю прерывание по переполнению TMR1
	MOVWF	PIE1
    BANK0  
	MOVLW	b'10001000'	;GIE=1, PEIE=0, RAIE=1
    MOVWF	INTCON

MAIN					
	GOTO MAIN

INTERRUPT_EXEC	
	BCF		INTCON,RAIF		
	BTFSC	INPUT_HALL_SENSOR
	GOTO	CALC_AND_EXEC	

	BSF		OUT_TO_CHECK
	BSF		OUT_TO_SWITCH		
	BCF		OUT_TO_CHECK
	RETFIE			
CALC_AND_EXEC
	BSF		OUT_TO_CHECK
	BCF		OUT_TO_SWITCH
	BCF		OUT_TO_CHECK	
	RETFIE					
	END
