//fsystem=8MHZ #include #include #include #asm .equ __lcd_port=0x1B; #endasm #include #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); } //-------------------------------------