  
  	LIST P=16F876
	#INCLUDE        	    "p16f876A.INC"
	__CONFIG      _PWRTE_OFF & _XT_OSC & _LVP_OFF & _WDT_OFF 

SEG     EQU	20H
MINU	EQU	21H
BUCLE	EQU	22H
AJUSTE	EQU	23H

	ORG     00H
	GOTO    INICIO
	ORG     04H
	DECF	BUCLE,F		;DECREMENTA EL BUCLE
	BTFSC	STATUS,2	;HA LLEGADO A 0?
	GOTO	INTERRUP	;SALIDA 2 A SEGUNDOS
	BCF     INTCON,2	;BORRA FLAG DESBORDE
	RETFIE				;SEGUIR
	
INICIO
	BSF     STATUS,5		;PAG 1"
	MOVLW   B'00000100'     ;1/32
	MOVWF   OPTION_REG      ;PREESCALER 
	BCF     STATUS,5        ;PAG 0"
	BCF     INTCON,2		;BORRAR FLAG DESBORDE   
	MOVLW   B'10100000'
	MOVWF   INTCON			;ACTIVAR INTERRUPCION TMR0       
	MOVLW	0X7B			;CANTIDAD DE VECES DEL BUCLE
	MOVWF	BUCLE			;REGISTRO DEL BUCLE
	MOVLW	0XEE			;PRECARGA DEL TMR0
	MOVWF	TMR0
PRINCIPAL
;..... AQUI VA TODO EL PROGRAMA PRINCIPAL
	NOP
	GOTO PRINCIPAL
;=========================== 
INTERRUP 
	DECFSZ  SEG,F			;PASA CADA SEGUNDO
	GOTO    SEGUNDOS
	MOVLW   3CH				;REPONE 60 SEGUNDOS
	MOVWF   SEG
	INCF    MINU,F			;INCREMENTA MINUTOS
SEGUNDOS
	MOVLW	0X7A		;CARGA LAS VECES QUE VA A INTERRUMPIR
	MOVWF	BUCLE
	MOVLW	0XBB		;BUCLE DE AJUSTE +/-
	MOVWF	AJUSTE
	DECF	AJUSTE,F
	BTFSS	STATUS,2	;HA LLEGADO A 0?
	GOTO	$-2			;NO
	NOP
	NOP
	NOP
	NOP	
	MOVLW	0X06		;RECARGA TMR0
	MOVWF	TMR0
	BCF     INTCON,2	;BORRA FLAG INTERRUPCION		
	RETFIE 

              END
