Contestar teléfono pasado un determinado tiempo

Hola, estoy intentando realizar un programa que conteste el telefono pasado un determinado tiempo. Al entrar una llamada en el telefono recibo una señal de 25Hz y 0-5V. El codigo que he desarrollado es el siguiente pero no funciona me gustaria ver si me dan una mano.

Código:
INICIO
;CONFIGURACION DE PUERTOS Y REGISTROS
			BCF			STATUS,RP1
			BSF			STATUS,RP0
			MOVLW		b'00010001'
			MOVWF		TRISA
			MOVWF		TRISB
			BSF			OPTION_REG,PS0
			BSF			OPTION_REG,PS1
			BSF			OPTION_REG,PS2
			BCF			OPTION_REG,PSA
			BCF			OPTION_REG,4
			BCF			OPTION_REG,5
			BCF			STATUS,RP0
			MOVLW		H'00'
			MOVWF		PORTB

			MOVLW		H'31'
			MOVWF		RING
         	        BCF           	PORTB,6
			BSF			PORTB,7
;-----------------------------------------------
;                  PROGRAMA PRINCIPAL			
;----------------------------------------------- 
ALTO:		BTFSS		PORTB,1
			GOTO			ALTO
			CALL			RETARDO	;retardo de 10mS
			BTFSS		PORTB,1
			GOTO			ALTO
BAJO:			BTFSC		PORTB,1
			GOTO			BAJO
			BSF			PORTB,6

;-----------------------------------------------
;                  SUB-RUTINAS
;-----------------------------------------------
RETARDO
			BCF			INTCON,2
			MOVLW		H'D8'
			MOVWF		TMR0
BUCLE:		BTFSS		INTCON,2
			GOTO			BUCLE
			RETURN       	
		END
 
En realidad no lo tengo hecho en placa, esto mismo lo simulo en proteus y utilizo un generador de pulso de 25Hz y 0-5V.



y el problema es que queda encerrado el programa no llega en ningun momento en prender RB6
 
Última edición:
Bueno Amigo, en realidad NO es necesario, detectar la señal de 25Hz., pues ya que la misma posee una amplitud considerable, simplemente utilizas un condensador para separar la componente de continua, luego rectificas, filtras y acondicionas la señal, para obtener un estado logico alto o bajo segun, y aplicas directamente a una entrada del PIC.
 
antes que nada gracias por la respuesta. Esta señal se da en intervalos de 1seg y 5seg sin señal, eso ocurre cuando se detecta una señal. la idea es descontar un valor puesto previamente en un registro para poder contar cierta cantidad de pulsos y luego activar RB6. No puse todo ese proceso porque ni si quiera lo hace con un solo pulso. Como dije antes queda colgado.
 
Atrás
Arriba