
external0() interrupt 0			/* Routine runs when external echo is received  */
{
	TR0=0;						/* Turn off timer0 */
	EX0=0;						/* Turn off external interrupt */
	ECHO=1;						/* Set Pin3^2 external interrupt back high */
	timehi=TH0;					/* copy value of TH0 to timehi */
	timelo=TL0;					/* copy value of TL0 to timelo */
	
	totcount = timehi; 			/* Calculations for displaying distance in cm */
	totcount = totcount * 256 + timelo;
	time = totcount;
	time = time * clk;			/* calculates the time of the count */
	dist = time / factor; 		/* This is a floating point number so accuracy */
 								/* will be lost - i.e. only the real part given */
	init_serial();				/* Run Serial initialisation to send dist value */
	for(;;)
	{
		if(timehi!=0xFF)
		printf("dist %u cm time %lu totcount %un ", dist, time, totcount);
		break;
	}
	TI=0;
	init_serial();	
	for(;;)
	{
		if(timehi==0xFF)
		printf("no obstaclen");	
		break;
	}
	TI=0;
	init_timer();				/* >>RESTART<< Run initialise timer function */		
}

