就是我写的这段超声波的代码不知道为啥用不了
思路:用超声波返回高电平的时间计算距离然后用串口发送到电脑上
#include <STC15F2K60S2.H>
#include "intrins.h"
sbit TRIG = P1^1; //单片机2.7针脚对应 trig
sbit ECHO = P1^2; //单片机2.6针脚对应 echo
int S;
int time;
void Delay30us() //@11.0592MHz
{
unsigned char i;
_nop_();
_nop_();
i = 80;
while (--i);
}
void init()
{
AUXR=0x40;
SCON=0x50;
TMOD=0x00;//定时0,1为模式0
TL0 = 0xF7; //设置定时初值1um
TH0 = 0xFF; //设置定时初值
TL1 = 0xE0; //波特率9600
TH1 = 0xFE; //波特率9600
ES=1;
EA=1;
PS=1;//串口中断设高
TR1=1;
ET0=1;
//定时器0,1中断未打开//
}
void main()
{
init();
while(1)
{
TRIG=1;
Delay30us();
TRIG=0;
while(!ECHO);
TR0=1;
while(ECHO);
TR0=0;
SBUF=time;
time=0;
}
}
void TIMyE() interrupt 1
{
time++;
}
void dff() interrupt 4
{
RI=0;
while(!TI);
TI=0;
}
|