Este programita realiza el conteo de una interrupcion por rb0. Este conteo se inicia desde 1 y se quiere que empieze desde cero. Es decir en un display se tendrìa que mostrar el cero cuando no hubo ninguna interrupciony contarlas en caso de haberlas pero desde cero.
#include <18f4520.h> //PIC utilizado
#fuses XT,NOWDT,NOPROTECT,PUT //Configuramos los fuses
#use delay (clock=4000000) //Oscilador a 4Mhz
#use fast_io(b) //Optimizamos E/S del PORTB
#byte trisb = 0x86
#byte portb = 0x06
#include <lcd.c>
#byte option_reg = 0x81
long pulsos=0;
float energia;
#int_ext //atención por cambio en rb0
ext_isr(){ //funciòn interrupción
pulsos++;
}
//------Programa principal-----
void main(){
lcd_init();
set_tris_b(0x01);
port_b_pullups(true);
enable_interrupts(int_ext);
ext_int_edge(H_to_L);
enable_interrupts(global);
while (1)
{
//muestro por LCD el conteo
}
}