//fsystem=8MHZ
#include<mega16.h>
#include<delay.h>
#include<stdio.h>

#asm 
 .equ __lcd_port=0x1B;
#endasm
#include <lcd.h>
#define EN PORTB.0
#define ECHO PINB.1
bit limitbit;

unsigned int data_read_timer,x[5];

void ultratest(void);
interrupt[9] void timer1_ovr_isr(void)
{
TCCR1B=0;        //Timer1=stop
limitbit=1;
TCNT1=0;
}

//---------------------------------------
void main(void)
{
DDRB.0=1;        //EN=output 
DDRB.1=0;        //ECHO=input
PORTB.1=1;       //ECHO Pull_up = Enable 
EN=1;

lcd_init(16);
TCCR1A=0x00;
TCNT1=0X00;
TIMSK=0x04;
#asm("sei")
while(1)
{
ultratest();
delay_ms(300);
}
}
//------------------------------------------
void ultratest(void)
{  

limitbit=0;
EN=1;
TCNT1=0;
TCCR1B=0x02;
delay_us(160);
EN=0;
delay_us(500);

while(ECHO==1)
{
if(limitbit==1)
{
TCCR1B=0;
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("OV");
limitbit=0;
}
}
TCCR1B=0;
data_read_timer=TCNT1;

data_read_timer /=65;
lcd_clear();   
lcd_gotoxy(0,0);
sprintf(x," %U cm ",data_read_timer);
lcd_puts(x);
}
//-------------------------------------