/* A T0 idozitovel merd meg a P1.0 bemeneten megjeleno impulzus:
        _______
   ____|       |____

   hosszat */

#include <io51.h>
#include "t0.h"
#include "sps.h"

/* Az idozito megszakito rutinjaban szamlaljuk a tulcsordulasokat */
volatile int tulcsordulasok;

interrupt using[1] void T0_int(void)
{
	tulcsordulasok++;
}

/* Bemenet valtozas figyelese pollozassal */
bit elozo, dummy;

void main(void)
{
  /* Soros vonal beallitasa */
  beallitas();
  /* Meres az idozito hasznalataval, a leptetes periodusideje 12/Fosc */
  T0idozito1(0);
  elozo= P1.0;
  for (;;)
    {
      if (elozo!=P1.0)
	{
	  /* Ha a bemenet megvaltozik... */
	  elozo= P1.0;
	  if (P1.0)
	    {
	      /* Felfuto el: start, 0-rol inditjuk a szamlalast */
	      T0beallit(0);
	      tulcsordulasok= 0;
	      ET0= 1;
	      T0start();
	    }
	  else
	    {
	      float t;
	      /* Lefuto el: stop, leallitjuk a szamlalast */
	      T0stop();
	      /* Az ido kiszamitasahoz a szamlalt erteket szorozni kell
		 a leptetes periodusidejevel */
	      t= (tulcsordulasok*65536.0+TH0*256.0+TL0)*12.0/Fosc;
	      /* Az eredmeny kiirasa (Full ANSI formattert igenyel) */
	      printf("t=%g usec\n", t);
	    }
	}
    }
}
