Sei sulla pagina 1di 2

C:\Users\Pepo\Documents\Captura.

c
#include <16f887.h>//Librera para el PIC 16f887
#fuses XT,NOWDT,MCLR//Declaracin y activacin de fusibles
#use delay(clock=4M)//Configuracion del Reloj

//Pines Pantalla LCD


#define LCD_ENABLE_PIN PIN_D3
#define LCD_RS_PIN PIN_D2
#define LCD_RW_PIN PIN_D1
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>

#use standard_io(a)
#use standard_io(C)

int1 escalon=0;
int16 TimeFF=0,TimeFI=0,TimeFT=0;
float P=0.0;
int1 c=0;
float frec=0;

#INT_ccp1 //Funcin interrupcin por Captura

void ccp1_INT()
{
IF (c == 0)
{
//Flanco de subida. Lectura inicial
TimeFI=CCP_1; //Carga del valor del registro CCPR1 en flanco subida
//setup_ccp1 (CCP_CAPTURE_FE); //Configuracin modo Captura en flanco de bajada
c=1; //Control de cambio de flanco inicial a final
} ELSE { //Flanco Final
TimeFF=CCP_1; //Carga del valor del registro CCPR1 en flanco bajada
c =0;
IF (escalon == 0)
{
escalon=1;
}
}
}

void main()
{
lcd_init();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8 ); //Configuracin TMR1
setup_ccp1(CCP_CAPTURE_RE);//Definimos Modo Captura en CCP1
//Configuracin modo Captura en flanco de subida
c = 0;//Control de cambio a 0
enable_interrupts(INT_ccp1); //Habilitacin interrupcin modulo CCP
enable_interrupts(global); //Habilitacin interrupcin global
WHILE (true)
{
IF (escalon == 1)
{
//Pulso nuevo?
TimeFT=(TimeFF-TimeFI);
P = TimeFT*8.0;
frec = (1 / P) * 1000000;
lcd_gotoxy(1,1);
printf(lcd_putc,"\f FRECUENCIA");
lcd_gotoxy(1,2);
printf(lcd_putc,"f = %6.2f ",frec);
lcd_gotoxy(14,2);
printf(lcd_putc,"Hz");
escalon=0;
}

1
C:\Users\Pepo\Documents\Captura.c
}
}

Potrebbero piacerti anche