找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1203|回复: 2
打印 上一主题 下一主题
收起左侧

这个超声波测距的程序能有人讲解一下么,有点看不太懂

[复制链接]
跳转到指定楼层
楼主
ID:429467 发表于 2018-12-12 10:51 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<REG52.H>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsfr ISP_CON=0xe7; sbit IO=P1^0;sbit CS=P2^1;sbit CLK=P2^2;sbit DAT=P2^0;uint juli,i;bit flag;void delay(uint i){        uint j,k;        for(j=i;j>0;j--)                for(k=0;k<114;k++);}void send(uchar add,uchar dat){        uchar i;        CS=0;        for(i=0;i<8;i++)        {                CLK=0;                DAT=(bit)(add&0x80);                add<<=1;                CLK=1;        }        for(i=0;i<8;i++)        {                CLK=0;                DAT=(bit)(dat&0x80);                dat<<=1;                CLK=1;        }        CS=1;}void dis(){        send(1,0);        send(2,0);        send(3,0);        send(4,0);        send(5,0);        send(6,juli/100);          send(7,(juli/10)%10);        send(8,juli%10);}void launch(){                uchar i;        for(i=0;i<50;i++)        {                IO=0;                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();                IO=1;                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();        }}void init(){        TMOD=0x01;        TH0=0,TL0=0;        IT0=1;        EA=1;        send(0x09,0xff);        send(0x0b,0x07);                         send(0x0a,0x0f);        send(0x0c,0x01);        send(0x0f,0x00);}void main(){        init();        dis();        while(1)        {                do                {                        IO=1;                        TH0=0,TL0=0;                        EX0=1;                        TR0=1;                        launch();                        delay(10);                }                while(flag==0);                flag=0;                        juli=(i/2)*0.033;                dis();                 delay(500);                 ISP_CON=0x60;          }}void int0() interrupt 0{        TR0=0;        EX0=0;        flag=1;        i=(TH0*256)+TL0;}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:338671 发表于 2018-12-12 12:33 | 只看该作者
有点心整理一下再发出来好吗,建议截图发,
回复

使用道具 举报

板凳
ID:429467 发表于 2018-12-12 12:57 来自手机 | 只看该作者
51danpianji111 发表于 2018-12-12 12:33
有点心整理一下再发出来好吗,建议截图发,

#include<REG52.H>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sfr ISP_CON=0xe7;
sbit IO=P1^0;
sbit CS=P2^1;
sbit CLK=P2^2;
sbit DAT=P2^0;
uint juli,i;
bit flag;
void delay(uint i)
{       
uint j,k;       
for(j=i;j>0;j--)               
for(k=0;k<114;k++);
}
void send(uchar add,uchar dat)
{       
uchar i;       
CS=0;       
for(i=0;i<8;i++)       
{               
CLK=0;               
DAT=(bit)(add&0x80);               
add<<=1;               
CLK=1;       
}       
for(i=0;i<8;i++)       
{               
CLK=0;               
DAT=(bit)(dat&0x80);               
dat<<=1;               
CLK=1;       
}       
CS=1;
}
void dis()
{       
send(1,0);       
send(2,0);       
send(3,0);       
send(4,0);
send(5,0);       
send(6,juli/100);  
send(7,(juli/10)%10);       
send(8,juli%10);
}
void launch()
{               
uchar i;       
for(i=0;i<50;i++)       
{               
IO=0;                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();               
IO=1;                _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();       
}}
void init()
{       
TMOD=0x01;       
TH0=0,TL0=0;       
IT0=1;       
EA=1;       
send(0x09,0xff);       
send(0x0b,0x07);                        
send(0x0a,0x0f);       
send(0x0c,0x01);       
send(0x0f,0x00);
}
void main()
{       
init();       
dis();       
while(1)       
{               
do               
{                       
IO=1;                       
TH0=0,TL0=0;                       
EX0=1;                       
TR0=1;                       
launch();                       
delay(10);               
}               
while(flag==0);               
flag=0;                       
juli=(i/2)*0.033;               
dis();                
delay(500);                
ISP_CON=0x60;         
}}
void int0() interrupt 0
{       
TR0=0;       
EX0=0;       
flag=1;       
i=(TH0*256)+TL0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表