me hice una ensalada me falta el ultimo empujón y arranco ya logre poner un poco en su lugar las cosas me falta el duty que mide cualquier cosa
#include <16f883.h>
#device ADC=10
#use delay (internal = 8MHz)
#define use_portb_lcd true
#fuses NOFCMEN, NOIESO,INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT,
#include <lcd.c>
int16 tic,tic2,tic3,f;
int1 tiempo,tiempo2;
float T,Periodo;
int duty;
#int_CCP1
void CCP1_isr(void)
{
if(!tiempo)
{
tic2 = CCP_1;
tiempo = 1;
}
else
{
tic3 = CCP_1;
tiempo = 0;
if(!tiempo2) tiempo2 = 1;
}
}
void main()
{
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_ccp1(CCP_CAPTURE_RE);
setup_ccp1(CCP_CAPTURE_FE);
enable_interrupts(INT_CCP1);
enable_interrupts(GLOBAL);
lcd_init();
while (true){
if(tiempo2)
{
disable_interrupts(GLOBAL);
tic = (tic3 - tic2);
T=4.0*8.0/8000000.0;
Periodo=T*tic;
F=1/Periodo;
duty=tic3*100/(tic3+tic2);
tiempo2 = 0;
enable_interrupts(GLOBAL);
}
lcd_gotoxy(1,2);
printf(lcd_putc,"d=%02u",duty);
lcd_gotoxy(9,2);
printf(lcd_putc,"F=%03lu",F);
}
}