Hola Amigos, estoy comenzando a programar el PIC16F628, pero en lo más básico como es encender un led no puedo hacerlo funcionar, ya he probado mil alternativas, de lenguaje, con el programador, cambié de PIC por si estaba fallado el que usaba y no logro que funcione mi pequeño programa, lo curioso es que he usado el simulador de MPLAB verificando paso a paso el funcionamiento y en teoría funciona, pero como siempre pasa, la teoría no es igual a la práctica, se que esto es muy tonto para Uds., pero quisiera de ser posible si alguien pudiera darme una mano y talves pueda orientarme en donde esta mi falla.
La idea del software es hacer parpadear un led a 1Hz por el bit 0 del PORTA, el software que desarrolle es este:
;Primer proyecto después de mucho tiempo, voy a hacer parpadear un led a una
;frecuencia de 1Hz
list p=16f628
errorlevel 1, -302
;Declaración de registros
status equ 0x03
cmcon equ 0x1f
trisa equ 0x85
trisb equ 0x86
porta equ 0x05
;Declaración de variables
tiempo0 equ 0x20 ;en estos registros, se almacenan los tiempos de espera
tiempo1 equ 0x21
tiempo2 equ 0x22
;Declaración de bits
rp0 equ 5
rp1 equ 6
ra0 equ 0
;Inicio
org 0
movlw 0x07
movwf cmcon ;apaga los comparadores, configura puertos como I/O
bsf status, rp0 ;selecciona bank 1
bcf status, rp1
clrf trisa ;configura todos los bits del puerto A como salida
movlw 0x01
movwf trisb ;configura bit1 del puerto B como entrada, los demas como salida
;Rutina Oscilador
bcf status, rp0 ;selecciona bank 0
led bsf porta, ra0 ;enciende led
loop3 movlw 0x03
movwf tiempo2
loop2 movlw 0xfe
movwf tiempo1
loop1 movlw 0xda
movwf tiempo0
loop0 decfsz tiempo0,1
goto loop0 ;salta hasta que transcurran 659µSeg.
decfsz tiempo1,1
goto loop1 ;salta hasta que transcurran 167mSeg.
decfsz tiempo2,1
goto loop2 ;salta hasta que transcurran 501mSeg.
btfss porta, ra0 ;verifica si el led esta apagado o encendido
goto led ;esta apagado, va a encenderlo
bcf porta, ra0 ;apaga led
goto loop3
end