Estoy ejecutando un Hello World que alterna RB7:
#include <p16f1509.inc>
__config _CONFIG1, _FOSC_INTOSC
udata
delay0 res 1
delay1 res 1
delay2 res 1
delay3 res 1
ledState res 1
delay32 macro delay
goto $+1
goto $+1
banksel delay3
movlw (delay - 1) & 0xFF
movwf delay0
movlw (delay - 1) >> 0x08 & 0xFF
movwf delay1
movlw (delay - 1) >> 0x10 & 0xFF
movwf delay2
movlw (delay - 1) >> 0x18 & 0xFF
movwf delay3
call doDelay32
endm
rst code 0x00
start:
clrf PORTB
banksel TRISB
clrf TRISB
banksel ANSELB
clrf ANSELB
movlw 0x80
movwf PORTB
banksel ledState
movlw 0x00
movwf ledState
loop:
banksel ledState
movf ledState, 0
xorlw 0x80
movwf ledState
movwf PORTB
delay32 d'2500'
goto loop
doDelay32
movlw 0xFF
addwf delay0, F
btfsc STATUS, C
clrw
addwf delay1, F
btfsc STATUS, C
clrw
addwf delay2, F
btfsc STATUS, C
clrw
addwf delay3, F
btfsc STATUS, C
clrw
iorwf delay0, W
iorwf delay1, W
iorwf delay2, W
iorwf delay3, W
btfss STATUS, Z
goto doDelay32
retlw 0
end
Esto se ejecuta perfectamente en el depurador MPLABX usando un PicKit3, pero no se ejecuta de otra manera.
Esto parece ser un problema común, pero un día de Google no ha resultado nada útil. Esto es lo que he aprendido:
-
La mayoría de las personas no logran sacar MCLR alto. Tengo un 10k entre MCLR y VDD.
-
El bit de configuración del reloj toma como valor predeterminado un reloj externo. Ponerlo en INTOSC no ayudó.
-
Algunas personas sugieren establecer el bit! DEBUG, pero la hoja de datos afirma que el depurador se encarga totalmente de esto. Lo intenté de todos modos; no ayudó.
Cualquier sugerencia sería apreciada. Gracias
También: ¿Alguien sabe si es posible programar un PIC utilizando un Beaglebone mediante la conexión de I2C a ICSPDAT e ICSPCLK?