Hola compañeros, bueno estoy tratando de programar un pic16f819 como slave en una comunicación SPI y requiero que el pic reaccione a la interrupción cuando el buffer se llene.
El programa que tengo es bien básico, toma los 8 bits que debieran llegar por SPI y los lleva al puerto GPIO para ser observados por leds.
El código es el siguiente:
; Configuracion SLAVE
LIST P=16F819
INCLUDE <p16f819.INC>
__CONFIG _CP_OFF&_CPD_OFF&_MCLRE_OFF&_BODEN_OFF&_WDT_OFF&_PWRTE_ON&_HS_OSC
;...................... INICIO DEL PROGRAMA ................
org 0
goto CONFIGURACION_GLOBAL
org 4 ; direccion que apunta las interrupcciones
goto RUTINA_INTERRUPCION
org 5
CONFIGURACION_GLOBAL:
bcf STATUS, RP0
bcf STATUS, RP1
clrf PORTB
bsf STATUS, RP0 ; accedo al banco 1
movlw b'00000000' ; puerto A como salida para leds
movwf TRISA
bsf TRISB,1 ; SDI in
bcf TRISB,2 ; SDO out
bsf TRISB,4 ; SCK in
bsf TRISB,5 ; SS in
bcf STATUS,RP0 ; vuelvo al banko 0
CONFIGURACION_SPI:
bsf STATUS, RP0 ; accedo al banco 1
clrf SSPSTAT
bcf SSPSTAT,SMP
bcf SSPSTAT,CKE
bcf STATUS,RP0 ; vuelvo al banko 0
movlw b'01110000'
movwf SSPCON
CONFIGURACION_INTERRUPCION:
bsf STATUS,RP0 ; vuelvo al banko 1
bsf PIE1,SSPIE ; activo interrupcion SSP
bcf STATUS,RP0 ; vuelvo al banko 0
bcf PIR1,SSPIF ; limpio bandera
bsf INTCON,PEIE ; habilitar interrupciones perifericos
bsf INTCON,GIE ; habiltar interrupciones globales
goto INICIO
RUTINA_INTERRUPCION:
movfw SSPBUF ; muevo lo que almaceno el buffer al registro W
movwf PORTA ; llevo los datos de registro W al puerto A para ver en los leds
bcf PIR1,SSPIF ; limpio bandera
nop
retfie
INICIO:
nop
GOTO INICIO
END
Cualquier ayuda me sera útil.

Saludos