Prueba el CCS (o PCWH que es lo mismo). Se hace muy simple...
La activas y creas una rutina. Un ejemplo de uso en este sería:
Codigo:
#include <16f84a.h>
#fuses HS,NOWDT
#use delay (clock=4000000)
#define INTS_PER_SECOND 15 // (4000000/(4*256*256))
byte seconds; // A running seconds counter
byte int_count; // Number of interrupts left before a second has elapsed
int numero;
#int_rtcc // This function is called every time
clock_isr() { // the RTCC (timer0) overflows (255->0).
--int_count;
if(int_count==0) { // per second.
++seconds;
if (numero == 0) {
numero = 1;
} else {
numero = 0;
}
int_count=INTS_PER_SECOND;
}
}
void main(void) {
int_count=INTS_PER_SECOND;
set_timer0(0);
setup_counters( RTCC_INTERNAL, RTCC_DIV_256);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
set_tris_a(0x00);
numero = 0;
for( ; ; ) {
if(numero==0) {
output_bit(PIN_A0,1);
} else {
output_bit(PIN_A0,0);
}
}
}
Como ves sólo hay que activarla y luego hacer una rutina indicando antes la interrupción que se trata, #int_rtcc . Osea, lo que esté debajo de esto, la función, es lo que hace cuando se crea esa interrupción. Fácil verdad...