Estoy realizando la medida de amplitud de pulsos, usando el
modulo ccp1 y ccp2. La idea es usar un modulo para que capture
subiendo el valor del timer1 y el otro para capturar el valor
bajando, por alguna causa no me funciona, aqui les dejo
la rutina que hice para que me digan cual es el problema uso un
cristal de 4 Mhz:
BANCO1 ;Banco1
BSF PORTC,2 ;patita RC2/CCP1 como entrada
bsf PORTC,1 ;patita RC1/CCP2 como entrada
BANCO0 ;Banco 0
MOVLW B"00000001"
MOVWF T1CON ;Configura Timer1 modo temporizador, preesc 1/1
CLRF TMR1H ;Inicializa en cero el timer 1
CLRF TMR1L ;apaga el módulo CCP para inicializar
CLRF CCP1CON ;limpia latch de CCP1
CLRF CCP2CON ;LIMPIA LATCH DE CCP2
MOVLW B"00000101"
MOVWF CCP1CON ;en transición de subida
MOVLW B"00000100"
MOVWF CCP2CON ;en transición de subida
BCF PIR1,2 ;limpia bandera de interrupcion.
checa BTFSS PIR1,2 ;checa bandera
GOTO checa ;si no se ha activado espera
BCF PIR1,2 ;si ya se activó, la limpia
MOVF CCPR1H,0 ;copia periodo capturado
MOVWF Cap_1_H
MOVF CCPR1L,0
MOVWF Cap_1_H
checa2 BTFSS PIR1,2 ;checa bandera
GOTO checa2
CLRF TMR1L ;limpia la cuenta del timer 1
CLRF TMR1H
MOVF CCPR2H,0 ;copia periodo capturado
MOVWF Cap_2_H
MOVF CCPR2L,0
MOVWF Cap_2_H
CALL RESTA_PRES ;RESTA Cap_2-cap_1 PARA SABER AMPLITUD DE PULSO
CALL B2_BCD
CALL dISPLAY_RESUL ;VISUALIZO EN DISPLAY LCD
CALL DELAY_1S ; RETARDO PARA VISUALIZAR
GOTO checa ;repite
;
Esta es una rutina modificada, realizada por: Mikel Etxebarria
(c) Microsystems Engineering (Bilbao), ejempl0:ejem_6.asm