Hola Sres todopic:
Mi dilema es el siguiente... hace algunos dias iniciandome en el tema de los microcontroladores pic, realice varias practicas hasta lograr cierta soltura por lo cual hice un pequeño codigo para controlar un extractor de aire para mantener fresco el baño de mi casa. La idea es que se mantiene apagado por una hora y luego enciende 5 minutos, luego se apaga... y asi por siempre hasta que alguien presiona un pulsador (INTF) se interrumpe lo anterior para permanecer en extractor prendido por 20 minutos y despues sigue como al principio.
Todo lo anterior funcionó de maravillas en un pic16f630 hasta que conecté mal unos cables y boom !! tronó todo mi circuito (220v).
Comencé todo nuevamente modificando el codigo para un pic16F628A. PERO noté que no andaba bien.....
reducí el codigo hasta llegar al simple led parpadeante y aun no andaba bien... terminé dandome cuenta que la instruccion XORWF no funciona en mi pic16F628A....... ¿A alguien le ha pasado que su micro no ejecute una instrucción ? ¿es muy raro que al pic se le queme por estatica solo una instruccion ?
LED parpadeante que SI funciona:
list p=16f628a
include P16f628a.inc
__CONFIG _BODEN_OFF & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
cont_1 equ 0x20
cont_2 equ 0x21
;cambio de banco
bcf STATUS, RP1 ;
bsf STATUS, RP0 ;subo al banco 1 para configurar
;configurando el puerto A
clrw
movwf TRISA ; solo usaré RA0
;teminar con la configuracion
bcf STATUS, RP0 ;bajo al banco 0
ciclo:
bsf PORTA, 0
call retardo
bcf PORTA, 0
call retardo
goto ciclo
retardo:
decfsz cont_1, 1
goto retardo
decfsz cont_2, 1
goto retardo
return
end
EL QUE NO FUNCIONA... EN LOS OTROS PIC FUNCIONABA
list p=16f628a
include P16f628a.inc
__CONFIG _BODEN_OFF & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _XT_OSC
cont_1 equ 0x20
cont_2 equ 0x21
;cambio de banco
bcf STATUS, RP1 ;
bsf STATUS, RP0 ;subo al banco 1 para configurar
;configurando el puerto A
clrw
movwf TRISA ; solo usaré RA0
;teminar con la configuracion
bcf STATUS, RP0 ;bajo al banco 0
movlw 0x01 ;W a uno para hacer xor con PORTA
ciclo:
xorwf PORTA, 1 ;xor entre W y PORTA y resultado en PORTA
call retardo
goto ciclo
retardo:
decfsz cont_1, 1
goto retardo
decfsz cont_2, 1
goto retardo
return
end
parece que murió solo una instrucción..... Saludos.