//---------------------------------------------
// usando el timer1 como osc externo e interrumpiendo
// en modo sleep
//---------------------------------------------
#include <16F877a.h>
#fuses XT,NOPROTECT,NOPUT,NOWDT,NOBROWNOUT,NOLVP,NOCPD
#use delay (clock=4000000)
//*************************************************
#INT_TIMER1 // rutina de servicio de interrupcion
void mitimer(){
delay_cycles(1); // pegar un punto de ruptura
}
//*************************************************
void main(){
set_tris_a(0x0);
set_tris_b(0x0);
set_tris_c(0b0);
set_tris_d(0x0);
set_tris_e(0x0);
set_timer1(0x7fff);
setup_timer_1(0b1111);
// pre=1:1 (T1CKPS1:T1CKPS0=0)
// osc externo habilitado (T1OSCEN=1 y TMR1CS=1)
// clock entrada asincrono (/T1SYNC=1)
// enciendo el timer1 () (TMR1ON=1)
enable_interrupts(INT_TIMER1); //selecciono la f. interr. del timer1
enable_interrupts(GLOBAL); // enciendo el sistema de interr.
sleep();
while(1){ // bucle eterno
delay_cycles(1);
} // fin del while
} // fin del main