欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
請問有沒有大佬用過單片機超聲波啊,可不可以指點一下
[打印本頁]
作者:
合體
時間:
2022-4-14 13:01
標題:
請問有沒有大佬用過單片機超聲波啊,可不可以指點一下
就是我寫的這段超聲波的代碼不知道為啥用不了
思路:用超聲波返回高電平的時間計算距離然后用串口發送到電腦上
#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;
}
作者:
zhxiufan
時間:
2022-4-14 13:56
有好幾個地方錯誤:
1、SBUF=time;time是int量,所以這樣發送是錯誤的。
2、void TIMyE() interrupt 1
{
time++;
}1us定時,中斷服務里面用變量加1來處理,響應加計算占用時間不少,恐怕會影響結果。還不如直接讀取定時器值來的準確。
3.void dff() interrupt 4
{
RI=0;
while(!TI);
TI=0;
}這里應該是錯誤的,發送引起的中斷的話TI已經是1了,沒有必要再有等待,所以這里最好的處理是判斷引起中斷原因做相應處理。
void dff() interrupt 4
{
if(RI) RI=0;
if(TI) TI=0;
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1