LIST p=16F877A
#INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC
ORG 0x00
GOTO INICIO
ORG 0x04
GOTO INTERRUPCION
INICIO
; Configuracion de puertos
BANKSEL TRISB
CLRF TRISB
CLRF TRISC
BANKSEL PORTB
CLRF PORTB
CLRF PORTC
; Configuracion del CCP
MOVLW 0x0B ; MODO COMPARACION: CCP2 SE PONE A 1 EN IGUALDAD, TMR1 = 0 por si solo
MOVWF CCP1CON ;CCP2IF SE PONE A UNO
MOVLW 0xFF
MOVWF CCPR1L ;CARGA A LA PARTE BAJA DE CCPR A IGUALAR
MOVLW 0xFF
MOVWF CCPR1H ;CARGA A LA PARTE ALTA DEL CCPH A IGUALAR
BANKSEL PIE2 ; Banco 1
bsf PIE2,CCP2IE ;ACTIVA INTERRUPCION DEL CCP2
BANKSEL PIR2 ; Banco 0
bcf PIR2, CCP2IF ;LIMPIA LA INTERRUPCION DEL CCP2
; Configuracion del Timer
MOVLW 0x00
MOVWF T1CON ; Aca configuramos preescaler,etc del timer, no lo activamos
CLRF TMR1L ;CARGA A LA PARTE BAJA DE TIMER1
CLRF TMR1H ;CARGA A LA PARTE ALTA DE TIMER1
BSF T1CON,TMR1ON ;TIMER1 ENCENDIDO
; Configuracion de interrupciones
bsf INTCON,GIE ;ACTIVA INTETTUPCIONES GLOBALES
bsf INTCON,PEIE ;ACTIVA INTERRUPCIONES POR PERIFERICO
Loop ;bucle infinito
goto Loop
INTERRUPCION
MOVLW 0x01
XORWF PORTB,0
BCF PIR2, CCP2IF ;LIMPA BANDERA CCP2
RETFIE ;RETORNO DE LA INTERRUPCIÓN
END