Es un contador de pulsos.
el problema que se me presenta es que se incrementa " pulsos" al iniciar el programa. Se tendría que aumentar cuando se presenta un flanco descendente en RB0. Después todo perfecto, el conteo se realiza cada vez que pasa de alto a bajo RB0. Me paso esto en otro programa y no lo pude solucionar. Alguna idea de porque sucede esto. El programa es sencillo pero no tengo una respuesta a lo que sucede. ¿ HAy algo que estoy configurando mal?.
#include <18f4620.h>
#fuses HS,NOWDT,NOLVP,NOBROWNOUT
#use delay(clock=4000000)
#include<lcdflex.c>
int8 pulsos;
//Función para la interrupción.
#int_ext //Activa la interrupción externa RB0.
ext_isr()
{
pulsos++;
}
void main(void)
{
set_tris_b(0X01); //Fija el puerto RB0 como entrada y el resto como salida.
enable_interrupts(GLOBAL); //Habilitación de todas(GLOBAL) las interrupciones.
enable_interrupts(INT_EXT); //Habilita la interrupción externa por defecto es RB0
ext_int_edge(H_TO_L);// detecta bajada de RB0
lcd_init();
lcd_putc('\f');
delay_ms(200);
lcd_gotoxy(1,1);
lcd_putc("Contador de Pulsos");
while(TRUE)
{
lcd_gotoxy(1,2);
printf(lcd_putc,"Pulsos=%07u",pulsos);
}
}