Pues estoy liado con el tema de configurar los fuses, he leido ya algunos post en este foro sobre ello donde indican que se configura al principio del programa en ASM de la siguiente forma:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
Poniendo OFF u ON segun queramos, mi problema es que en MPLAB me da este fallo:
*****************************************************************
Building LED.HEX...
Compiling LED.ASM:
Command line: "D:MPLABMPASMWIN.EXE /e+ /l+ /x- /c+ /rhex /p16F84 /q D:MPLABLED.ASM"
Error[113] D:MPLABLED.ASM 1 : Symbol not previously defined (_CP_OFF)
Error[113] D:MPLABLED.ASM 1 : Symbol not previously defined (_WDT_OFF)
Error[113] D:MPLABLED.ASM 1 : Symbol not previously defined (_PWRTE_ON)
Error[113] D:MPLABLED.ASM 1 : Symbol not previously defined (_XT_OSC)
Warning[215] D:MPLABLED.ASM 2 : Processor superceded by command line. Verify processor symbol.
MPLAB is unable to find output file "LED.HEX". This may be due to a compile, assemble, or link process failure.
Build failed.
Y mi codigo es este:
*****************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
STATUS equ 0x03
TRISB equ 0x06
PTOB equ 0x06
REG1 equ 0x0C
REG2 equ 0x0D
REG3 equ 0x0E
reset org 0x00 ; origen del programa, aquí comenzará
; siempre que ocurra un reset
goto inicio ; salta a "inicio"
org 0x05
inicio bsf STATUS,5 ; pone rp0 a 1 y pasa al banco1
movlw b"00000000" ; carga W con 00000000
movwf TRISB ; y pasa el valor a trisb
bcf STATUS,5 ; pone rp0 a 0 y regresa al banco0
ahora bsf PTOB,0 ; pone un 1 en RB0 (enciende el LED)
call retardo ; llama al retardo
bcf PTOB,0 ; pone a 0 RB0 (apaga el LED)
call retardo ; llama al retardo
goto ahora ; repite todo de nuevo
retardo movlw 10 ; Aquí se cargan los registros
movwf REG1 ; reg1, reg2 y reg3
; con los valores 10, 20 y 30
tres movlw 20 ; respectivamente
movwf REG2
dos movlw 30
movwf REG3
uno decfsz REG3,1 ; Aquí se comienza a decrementar
goto uno ; Cuando reg3 llegue a 0
decfsz REG2,1 ; le quita 1 a reg2
goto dos ; cuando reg2 llegue a 0
decfsz REG1,1 ; le quita 1 a reg1
goto tres ; cuando reg1 llegue a 0
retlw 00 ; regresa al lugar
; de donde se hizo la llamada
end
*****************************************************************
A parte tengo una duda, aun no tengo un cristal para probar y estoy impaciente, asi que como el programilla solo sirve para encender y apagar un led no creo que tenga problemas empleando un oscilador RC. Mi duda viene por quye no se si seria la config asi:
__CONFIG _RC_OSC
Muchas gracias por las respuestas y un saludo a todos.