超声波HC-SR04,51都整出了,移植到avr就不行
[复制链接]
产品说明:
一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出。一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离。 #include"iom128v.h" #include"macros.h"
#define uchar unsigned char #define uint unsigned int
#define a (PIND&0X10)
long time, flag,S;
void init(void) { TCCR1A=0X00; //非比较匹配.PWM模式,一般模式 TCCR1B=0X02; TCNT1H=0; TCNT1L=0; DDRB|=BIT(4); DDRD|=BIT(4); PORTD=0; DDRD&=~BIT(4); TIMSK|=BIT(2); }
void start(void) { uchar i; PORTB=0XFF; for(i=0;i<100;i++) { asm("nop"); } PORTB=0; }
void Conut(void) { time=TCNT1H*256+TCNT1L; TCNT1H=0; TCNT1L=0; S=(time*1.7)/100; //算出来是CM } void main(void) { LCD_init(); init(); TCNT1H=0; TCNT1L=0; while(1) { start(); while(!(a==0x10)); SREG|=BIT(7);;//使能定时器1中断 while(a==0x10); SREG&=~BIT(7);; Conut(); } }
#pragma interrupt_handler timer_1:15 void timer_1(void) { flag=1; }
啥情况啊!!救命了!!!
|