打印
[AVR单片机]

AVR 超声波问题

[复制链接]
835|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
IT阿炳|  楼主 | 2014-4-2 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器0的初始化
void init_time0()
{
        TCCR0=0x01;    //零分频
        TIMSK=0x01;
}
超声波的设置
unsigned int chaoshengbo()
{
        float s;
        c=1;
        PORTD|=0x02;          //送25us高电平    超声波控制端接在PB1口
        _delay_us(25);
        PORTD&=(~0x02);     
        while (!(PIND&0x01))        //检测是否有高电平的产生   接收端在PB0口
        TCNT0=0;
        flag=0;
        c=0;
        while(PIND&0x01)             //检测低电平
        temp=flag*256+TCNT0;
        s=temp*0.017*40;       
        return (unsigned int)s;
}
定时器0的中断程序
SIGNAL(SIG_OVERFLOW0)
{
        flag++;
        TCNT0=0;
}
我想问一下为什么程序在
while (!(PIND&0x01))        //检测是否有高电平的产生      接收端在PB0口
        TCNT0=0;
        flag=0;
        c=0;
        while(PIND&0x01)             //检测低电平
这个中间不进入中断

相关帖子

沙发
kimfeilai| | 2014-4-3 10:43 | 只看该作者
接收端應該接在外部中斷0的針上面吧,我C51的,若有錯,請見諒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

27

帖子

0

粉丝