Gracias migsantiago y Fer_Taca por sus aportes; les cuento que la configuracion la hice desde el editor de programa de asembler en MPLAB; el archivo Hex que se genera tiene la configuracion de los fusibles, ya que cuando cargo este archivo en el ic-prog me muestra WDT desactivado, CP desactivado, PWRTE activado, oscilador en XT tal como lo configure en el programa. Tambien hice la siguiente prueba, lei el programa de mi PIC que si funciona con el IC-PROG y el archivo hex tiene todos los fusibles como los queme, luego esa misma data la quemo en los PIC nuevos y nada , no funcionan.
Para salir de dudas lleve los PICs nuevos a una tienda donde los queman, tuve que pagar, lleve mi programa en una memoria y los queme. Los probe y siguen igualito (lo hice para descartar mi quemador).
Lo de la normativa ROHS que apunta el amigo, no la conozco, pero si involucra un cambio de operacion del PIC, pienso que Microchip lo indicaria en sus datasheets, lo cual no encontre. Si alguien tiene algun dato sobre esa normativa y la comparte seria de gran ayuda.
Aca les comparto el programa, para ver si tiene algun error, que yo no pude ver, esta en asembler. Inicialmente prendo y apago un led 2 veces, le doy el temporizado para que se note y luego escaneo la entrada y la muestro en las 5 salidas. Inverti la salida en un puerto para que me maneje un led y me muestre actividad.
Gracias por su colaboracion
Bendiciones
list p=16F84A ; list directive to define processor
#include <p16F84a.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x0C ; variable used for context saving
status_temp EQU 0x0D ; variable used for context saving
;**********************************************************************
RESET_VECTOR CODE 0x0000 ; processor reset vector
goto start ; go to beginning of program
ISR CODE 0x0004 ; interrupt vector location
Interrupt:
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; Place ISR Here
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
MAIN_PROGRAM CODE
start: bsf 0x03,5;
movlw 0xff;
movwf 0x05;
movlw 0x00;
movwf 0x06;
bcf 0x03,5;
arranque movlw 0xff;
movwf 0x06;encendemos led indicador ON RB6
movlw 0x0f;temporizamos por un seg
movwf 0x10;
aa movlw 0xff;
movwf 0x11;
bb decfsz 0x11;
goto bb;
decfsz 0x10;
goto aa;
movlw 0xbf;
movwf 0x06;apagamos led indicador RB6
movlw 0xff;temporizamos por 3 seg.
movwf 0x10;
cc movlw 0xff;
movwf 0x11;
dd decfsz 0x11;
goto dd;
decfsz 0x10;
goto cc;
arranque2 movlw 0xff;
movwf 0x06;encendemos led indicador ON RB6
movlw 0x0f;temporizamos por un seg
movwf 0x10;
ee movlw 0xff;
movwf 0x11;
ff decfsz 0x11;
goto ff;
decfsz 0x10;
goto ee;
movlw 0xbf;
movwf 0x06;apagamos led indicador RB6
movlw 0xff;temporizamos por 3 seg.
movwf 0x10;
gg movlw 0xff;
movwf 0x11;
hh decfsz 0x11;
goto hh;
decfsz 0x10;
goto gg;
scan btfss 0x05,0; Rutina de Scan de In para Out
goto scan1;
movlw 0xbf;
movwf 0x06;
goto scan;
scan1 movlw 0x40;
movwf 0x06;
goto scan;
end;
; remaining code goes here
goto $
END ; directive 'end of program'