Hola saludos a todos los piqueros...
Bueno hice un programa en asm, la verdad no se que pasa no creo que sea el programa sino el pic... bueno aqui esta el codigo:
...
INCLUDE "P16F84A.INC"
LIST P=16F84A
STATUS EQU 03H
PORTA EQU 05H
PORTB EQU 06H
Timer EQU 020H
Turn EQU 021H
ORG 00H
BSF STATUS,5 ;Configurar
BSF PORTA,0 ;Pa0=In
BCF PORTA,1 ;Pa0=OUT
BCF STATUS,5 ;End config
CLRF Turn
CLRF PORTA
INICIO:
BTFSC PORTA,0
GOTO START
GOTO INICIO
START:
BTFSC PORTA,0
GOTO START
GOTO ENVIAR
ENVIAR:
BTFSC Turn,0
GOTO ENVIARA
GOTO ENVIARB
ENVIARA:
BSF PORTA,1
CALL TIMEX
BCF PORTA,1
CALL TIMEX
BSF PORTA,1
CALL TIMEX
BCF PORTA,1
CALL TIMEX
CLRF Turn
GOTO INICIO
ENVIARB:
BSF PORTA,1
CALL TIMEX
BSF PORTA,1
CALL TIMEX
BSF PORTA,1
CALL TIMEX
BSF PORTA,1
CALL TIMEX
BSF Turn,0
BCF PORTA,1
GOTO INICIO
TIMEX:
movlw 055h ;decimas de segundo
movwf Timer
TIMEXB:
decfsz Timer,1
GOTO TIMEXC
Return
TIMEXC:
CALL TIMEY
GOTO TIMEXB
cblock
Loop
Loop1
endc
TIMEY:
movlw 0x2c
movwf Loop
Delay10ms_00
movlw 0x4a
movwf Loop1
Delay10ms_01
decfsz Loop1, f
goto Delay10ms_01
decfsz Loop, f
goto Delay10ms_00
movlw 0x10
movwf Loop
Delay10ms_10
decfsz Loop, f
goto Delay10ms_10
goto $+1
return
END
...
En si, el programa jala mas o menos como debe (el timer segun es una decima de segundo, pero ps no creo q este bien) el pex esta en esto:
A veces prendo el pic, todo funciona perfecto (el led esta apagado, al oprimir el boton, al dejar de precionarlo el led se enciende por X segundos entonces se apaga)
El problema es q anormalmente el led se queda prendido, (siempre es asi: o funciona todos los casos, o en el primer intento fracasa)
Le intento reseteando el pic, le intento apagando la corriente, etc...
Eh pensando que quiza debo desactivar alguna interrupcion o no se... (no esta desactivado el timer? ademas en una ocacion hice CLRF INTCON y no vi diferencias)
Lo que pienso que esta mal es:
El cristal debe quedarse fijo (sin mas pulsaciones)
Pero no creo... ya probe 3 cristales direntes, 3.5mhz y 2 de 4mhz y noi hay cambios, los probe con y sin condenzadores de 22pf....
La bateria pero tampoco... porque probe con otra y nada...
Falla arbitrariamente
De 10 encendidas, solo en 3 ocaciones va a funcionar... osea 70% de errror...
Alguien me podria decir q estoy haciendo mal?
Saludos...
PD: No es el pic, porq eso me paso con el pic anterior solo q usando otro programa, este es un nuevo pic, solo q el error pasa muy frecuente...
Y otra cosa:
Si el pic falla de este modo, como puedo averiguarlo?? osea algo para q el pic se resetie tipo el watchdog... debo usarlo a fuerzas??
En un codigo normal, aun asi es necesario el watchdog??? (osea... el watchdog deberia ser usado siempre?)
Saludos
Y felices pictas