Hola al foro. LLevo varios dias intentando hacer que me funcionen bien las interrupciones. Al final he llegado al programa mas simple, pero no se por que no funciona. LLevo mas de una semana dandole vueltas y nada. El código es:
#include <16F84.h>
#fuses NOWDT,RC, NOPUT, NOPROTECT
#use delay(clock=4000000)
int nInd;
BOOLEAN lInterrupt;
#int_RB
RB_isr()
{
nInd++;
lInterrupt = TRUE;
}
void main() {
nInd = 0;
lInterrupt = FALSE;
set_tris_a(0x0); // Todo salidas
set_tris_b(0xFF); // Todo entradas
output_a(0xFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
while(true)
{
if (lInterrupt==TRUE)
{
output_a(nInd);
lInterrupt = FALSE;
}
}
}
tambien dejo el fichero adjunto con el fuente, el hex y una simulacion en proteus.
Otra pregunta, he estado buscando un ejemplo de un esclavo para bus i2c implementado en un 16F84 y no lo he encontrado, es que no se puede implementar?.
Gracias por vuestro tiempo y un saludo.