就是我寫的這段超聲波的代碼不知道為啥用不了
思路:用超聲波返回高電平的時間計算距離然后用串口發送到電腦上
#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;
}
|