کد:
#include <mega16.h>
#include <lcd.h>
#include <delay.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x1b
#endasm
void main(void)
{
char arr[];
int i=0;
DDRB=0x01;
PORTB=0X00;
TCCR0=0;//خاموش بودن تايمر/کانتر
TCNT0=0x02;//صفر کردن مقدار اوليه محتماي تايمر کانتر
lcd_init(16);
lcd_putsf("1");lcd_gotoxy(0,0);
while (1)
{
PORTB=0x01;
delay_us(20);//دادن يه پالس به طول10 ميکرو ثانيه
PORTB=0X00;
//واي ميسته تا ببينه چيزي دريافت ميشه يا نه
//i <=160 : يعني زماني برابر با 30 ميلي ثانيه
//وقتي که پالس ها ارسال شد پايه زير يک ميشه
//ECHO
while(PINB.1==0)//منتظر ميمانيم تا ماژوم پالس ها و امواج رو ارسال کنه
{lcd_putsf("2");lcd_gotoxy(0,0);}
TCCR0=0;i=0;
while(PINB.1==1)
{
if(TCNT0>=9){i++;TCNT0=0;} //TCNT0>=9 : 10ميکروثانيه
lcd_putsf("3");lcd_gotoxy(0,0);
}
lcd_putsf("4");lcd_gotoxy(0,0);
if(i<=3000){lcd_gotoxy(0,0);itoa(i/1000,arr);lcd_puts(arr);delay_ms(100);lcd_clear();} //جسمي جلوش هست
if(i>3000){lcd_gotoxy(0,1);lcd_putsf("chizi nist!");delay_ms(100);lcd_clear();} //چسمي جوش نيست
}
}