He usado la busqueda y solo he encontrado lo contrario gente que quiere resetear el pic asique he abierto un nuevo tema.
LLevo hechas muchas pruebas entre ellas quitando todos las llamadas a subrutinas poniendo en su lugar goto x si se reseteaba x desbordamiento de la pila. Tb desactive el wdt para que no se resetee por el desbordamiento de este.
Entonces xq una vez inicializado el programa, quiero decir configurar los registros y asignar valores, el PIC16F877 se me resetea a los 4 o 5 segundo de comenzar el programa.
Datos:
PIC16F877
Oscilador: cristal de 20mhz y dos condensadores de 15pf
Basicamente es un contador y comparador.
Parte contador: mediante una interrupcion del timer1 a un valor reseteo el timer1 e incremento otro contador que a su vez incrementa otro.
Parte comparador: compara los valores de los contadores incrementados en la subrutina de interrupcion del timer1 con otros previamente asignados.
Al meter un "1" por un PIN lee unas valiables y se las asigna a los contadores y cuando termina hago un goto a ESPERA, que detallo a continuacion:
Tras activar el pin hago lo siguiente:
BSF T1CON,0 ;activo el timer1
MOVLW B"11111111"
MOVWF CON1
MOVLW B"11111111"
MOVWF CON2
MOVLW B"11111111"
MOVWF CON3
ESPERA CLRF CONT1
CLRF CONT2
CLRF CONT3
ESPERA1 MOVF CONT1,0
XORWF CON1,0
BTFSS STATUS,2
GOTO ESPERA1
MOVF CONT2,0
XORWF CON2,0
BTFSS STATUS,2
GOTO ESPERA1
MOVF CONT3,0
XORWF CON3,0
BTFSS STATUS,2
GOTO ESPERA1
GOTO PONER1
PONER1 BSF PORTB,0
El tiempo de espera siendo 10 segundos se resetea a los 4 o 5 (comprobado poniendo un led en un pin y antes de poner el "1" esta encendido y despues se apaga, x eso se que se reinicia, xq se enciende y cuando meto el 1 se apaga y a los 4 o 5 seg se vuelve a encender)
Si el tiempo es de 2 segundos igualmente no pone el "1" en la patilla RB0 pero se resetea a los 4 o 5 segundos
Espero me podais ayudar.
Gracias