Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Modo Captura PIC
Modo Captura PIC
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
#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;
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
}
}