Hola a todos.
Tengo hecha ya la migración y me compila sin problemas, pero a la hora de simular el código no genera las interrupciones.
A ver si algún alma cándida me puede echar una mano.
He seguido el tutorial de microchip (an1050) y no sé qué puede ser.
La simulación del código antes de migrar (16c621) me funciona sin problemas.
A continuación os dejo el código.
Un saludo,
Raúl
; LIST P=16C621
; INCLUDE "P16C621.INC"
LIST P=18F1220
INCLUDE "P18F1220.INC"
; RADIX HEX
; __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
CONFIG OSC = HSPLL, PWRT = On, WDT = OFF
; CONFIG OSC = XT, PWRT = On, BOR = ON, BORV = 27, WDT = OFF, MCLRE = OFF, LVP = OFF, DEBUG = OFF;
; CBLOCK 0x20
CBLOCK 0
FactorAlto
Entrada
Variable_Marca
Contador_Bucle_INTERNO
Contador_Bucle_EXTERNO
Contador_ON_OFF
Guarda_W
Guarda_STATUS
ENDC
TMR0_CARGA EQU -d'38'
ALTO_CERO_GRADOS EQU d'610'
TIEMPO_PATRON EQU d'5'
FACTOR_MINIMO EQU ALTO_CERO_GRADOS/TIEMPO_PATRON
#DEFINE Salida PORTA,0
#DEFINE Variable_Angulo PORTB,7
#DEFINE Marca Variable_Marca,0
ORG 0
goto Inicio
ORG .4
goto Interrupcion
Inicio
; bsf STATUS,RP0
setf BSR
bcf Salida
movlw b'11111111'
movwf PORTB
movlw b'00001000'
; movwf OPTION_REG
movwf T0CON
; bcf STATUS,RP0
clrf BSR
movlw TMR0_CARGA
; movwf TMR0
movwf TMR0L
movlw b'10100000'
movwf INTCON
;*********************************
Principal
movf PORTB,W
andlw b'01111111'
movwf Entrada
addlw FACTOR_MINIMO
movwf FactorAlto
goto Principal
;*********************************
Interrupcion
movwf Guarda_W
swapf STATUS,W
movwf Guarda_STATUS
; bcf STATUS,RP0
clrf BSR
movlw TMR0_CARGA
movwf TMR0L
movf Contador_ON_OFF,W
andlw b'11111111'
btfss STATUS,Z
goto Ajuste_ON_OFF
btfsc Salida
goto Dos_Posibilidades
movf Contador_Bucle_EXTERNO,W
andlw b'11111111'
btfss STATUS,Z
goto Ajuste_OFF
Pone_ON
bsf Salida
btfsc Variable_Angulo
goto Angulo_Grande
movf FactorAlto,W
movwf Contador_ON_OFF
bcf Marca
movlw .15
movwf Contador_Bucle_EXTERNO
nop
nop
nop
nop
goto Fin_Interrupcion
Angulo_Grande
movlw .249
movwf Contador_ON_OFF
bsf Marca
movlw .14
movwf Contador_Bucle_EXTERNO
nop
nop
nop
goto Fin_Interrupcion
Dos_Posibilidades
btfsc Marca
goto Segundo_Ciclo
Pone_OFF
bcf Salida
movf FactorAlto,W
sublw .249
movwf Contador_ON_OFF
nop
nop
nop
nop
nop ;5
nop
nop
nop
nop
nop ;10
nop
Fin_Interrupcion
swapf Guarda_STATUS,W
movwf STATUS
swapf Guarda_W,F
swapf Guarda_W,W
bcf INTCON,RBIF
bcf INTCON,TMR0IF
retfie
Ajuste_ON_OFF
decf Contador_ON_OFF,F
nop
nop
nop
nop
nop ;5
nop
nop
nop
nop
nop ;10
nop
nop
nop
nop
nop
nop
goto Fin_Interrupcion
Ajuste_OFF
movf Contador_Bucle_INTERNO,W
andlw b'11111111'
btfsc STATUS,Z
goto Fin_Bucle_Ajuste_OFF
decf Contador_Bucle_INTERNO,F
nop
nop
nop
nop
nop ;5
nop
goto Fin_Interrupcion
Fin_Bucle_Ajuste_OFF
movlw .249;
movwf Contador_Bucle_INTERNO
decf Contador_Bucle_EXTERNO,F
nop
nop
nop
goto Fin_Interrupcion
Segundo_Ciclo
movf Entrada,W
movwf Contador_ON_OFF
bcf Marca
bcf Salida
nop
nop
nop
nop
nop ;5
nop
nop
nop
goto Fin_Interrupcion
END