#include "F:\Program Files\PICC\Work\inerruptpro.h"
#use delay (clock=4000000)
#define LCD_TYPE 2
#include <flex_lcd.c>
#fuses XT,NOWDT,NOPROTECT

unsigned int icount = 0; 
float freq = 0;
float period;

#int_TIMER0
void  TIMER0_isr(void)
{
  set_timer0(0);
  icount++;
}

#int_TIMER1
void  TIMER1_isr(void) 
{
  disable_interrupts(GLOBAL);
  freq=((icount*256)+get_timer0())*14.5; // kHz
  period=(1/freq)*1000;
  set_timer1(0x9e58);
  icount=0;
}

void main()
{    
   setup_timer_0(RTCC_DIV_1|RTCC_EXT_H_TO_L);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
   set_timer0(0);
   set_timer1(0x9e58); // 65536-40536=25000 - ez kb. 100ms - 25000*4us 

   enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_TIMER1);
   
   enable_interrupts(GLOBAL);

   lcd_init();
   
   while(true) {
     lcd_gotoxy(1,1);
     printf(lcd_putc,"Freq: %f kHz.\n",freq);
     printf(lcd_putc,"Period: %1.4f ms.",period);
     delay_ms(300);
   }

}
