procedure Interrupt;
begin
if INTCON.T0IF=1 then
begin
Inc(counter); //increase counter on Timer0 overflow
INTCON.T0IF:=0; //clear TOIF bit (interupt flag)
end;
if INTCON.INTF=1 then
begin
Inc(x); // If the external flag is 1, raise x
INTCON.INTF:=0; //clear INTF bit (interrupt flag)
end;
end;
//main program measure time it takes for three ext interrupts to occur
if x=0 then old_counter:=counter;
if x=3 then
begin
x:=0;
speed:=some_number / (counter-old_counter);
end;