微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 谁能帮看一下我写的超声波测距程序哪里有问题

谁能帮看一下我写的超声波测距程序哪里有问题

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit trig=P3^6;
sbit echo=P3^7;
sbit dula=P2^6;
sbit wela=P3^7;
sbit sj=P1^4;
uchar temp=0;
uchar a,b,c,s,t,m,n,o;
uchar flag;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
void delay(uchar z)
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void display(m,n,o)
{
        wela=1;
        P0=0xbf;
        wela=0;
        dula=1;
        P0=table[m];
        dula=0;
        wela=1;
        P0=0xdf;
        wela=0;
        dula=1;
        P0=table[n];
        dula=0;
        wela=1;
        P0=0xef;
        wela=0;
        dula=1;
        P0=table[o];
        dula=0;
}
void count()
{
        t=TH0*256+TL0;
        s=(t*340)/20000;
        if(s>450)
        {
                 flag=0;
                display(5,5,5);
        }
        else
        {
                a=s/100;
                b=s%100/10;
                c=s%10;
                 display(a,b,c);
        }
}
void start()
{
        trig=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        trig=0;
}
void main()
{
        while(1)
        {
                 delay(5);
                start();
                TMOD=0x01;
                TH0=0;
                TL0=0;
                EA=1;
                ET0=1;
                TR0=1;
                while(1)
                {
                         start();
                        if(temp==1)
                        {
                                temp=0;
                                count();
                        }
                }          
        }
}
void time() interrupt 1
{
        TH0=0;
        TL0=0;
        echo=0;
        if(echo==1)
        temp=1;
        else
        temp=0;
}

菜鸟路过…………

飘过,不会

Trig引脚应该周期性给点评

不知道啊(我也不会)

知道      晚啦

?我以前做过,看到迟了

正在做,不过还是不明白

正在研究,还得请教啊!

t怎么是uchar型的?

啊啊啊啊,不晓得啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top