|
調(diào)試超聲波測(cè)距程序時(shí),由測(cè)得的時(shí)間計(jì)算距離時(shí)發(fā)生錯(cuò)誤,單片機(jī)程序如下:
#include <stc15.h>
void main()
{
unsigned int i;
unsigned long S;
unsigned int Time;
AUXR &= 0x7F; //定時(shí)器時(shí)鐘12T模式 12M晶振機(jī)器周期1us
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0x00; //設(shè)置定時(shí)初值
TH0 = 0x00; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 0; //定時(shí)器0開(kāi)始計(jì)時(shí)
ET0 = 0;
EA = 1; //使能
TR0=1; //啟動(dòng)計(jì)數(shù)
for (i=0;i<500;i++); //模擬測(cè)量時(shí)間
TR0=0;
Time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(Time*17)/1000; //計(jì)算距離(此計(jì)算結(jié)果不對(duì),原因是S不能保存32位結(jié)果)
}
/*償試使用 S=((Time<<4)+Time)/1000;也不對(duì)
但使用 S=(_lrol_(Time,4)+Time)/1000;就對(duì)了*/
44.png (309.7 KB, 下載次數(shù): 15)
下載附件
2023-11-25 13:14 上傳
|
|