mình mới nghih điện tử toàn tự học và đọc nền thất bại nhiều quá.nản thật.mình viết cái code này giao tiếp với srf05 va atmega 8.cứ lại gần 1 mết thì báo động nhưng lỗi.giúp mình ti nha,cảm ơn nhiều
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include<math.h>
#ifndef cbi
#define cbi(port,bit) (port)&=~(1<<(bit))
#endif
#ifndef sbi
#define sbi(port,bit) (port)|=(1<<(bit))
#endif
int giatri=0,ok=0;
float ketqua;
ISR(INT0_vect)
{
giatri=TCNT1;
ketqua=(float)(giatri/58);
TCCR1B=0x00;
ok=1;
}
int main()
{
PORTB=0x00;
DDRB=0xff;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0x00;
GICR=0x40;
MCUCR=0x02;
sei();
ok=0;
while(1)
{
if(ok==0)
{
sbi(PORTC,0);
_delay_ms(12);
cbi(PORTC,0);
while(bit_is_clear(PIND,2)){}
TCCR1B=0x02;
TCNT1=0;
}
if(ok=1) { ok=0;
if((ketqua<100)&&(ketqua>50)) {
PORTB=0x00; _delay_ms(2000); PORTB=0xff;}
_delay_ms(200);}
}
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include<math.h>
#ifndef cbi
#define cbi(port,bit) (port)&=~(1<<(bit))
#endif
#ifndef sbi
#define sbi(port,bit) (port)|=(1<<(bit))
#endif
int giatri=0,ok=0;
float ketqua;
ISR(INT0_vect)
{
giatri=TCNT1;
ketqua=(float)(giatri/58);
TCCR1B=0x00;
ok=1;
}
int main()
{
PORTB=0x00;
DDRB=0xff;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0x00;
GICR=0x40;
MCUCR=0x02;
sei();
ok=0;
while(1)
{
if(ok==0)
{
sbi(PORTC,0);
_delay_ms(12);
cbi(PORTC,0);
while(bit_is_clear(PIND,2)){}
TCCR1B=0x02;
TCNT1=0;
}
if(ok=1) { ok=0;
if((ketqua<100)&&(ketqua>50)) {
PORTB=0x00; _delay_ms(2000); PORTB=0xff;}
_delay_ms(200);}
}
}