?? ultrasonic2.c
字號:
#include<P89V51.H>
#include<LCD.C>
sbit P1_6 =P1^6;
sbit P1_7 =P1^7;
sbit P3_3 =P3^3;
unsigned char a,b;
unsigned int c;
void DisplayInt(Uchar X,Uchar Y,Uint f);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void Delay(unsigned char c,unsigned char d,unsigned char e)
{
unsigned char i,j,k;
for(i=0;i<=c;i++)
{
for(j=0;j<=d;j++)
for(k=0;k<=e;k++);
}
}
void RigourTimer(unsigned char m)
{
unsigned char i;
for(i=0;i<m;i++)
{
TMOD=0x00;
TH0=0xff30/256;
TL0=0xff30%256;
TR0=1;
EX1=1;
do{}
while(!TF0);
TF0=0;
}
TR0=0;
EX1=0;
}
void counter(void) interrupt 0 using 3 //測出往返時間
{
EX0=0;
P1_7=!P1_7;
EA=1;
TR1=0;
a=TL1;
b=TH1;
}
////////////////////////////////////////////////////////////
void timer1(void) interrupt 3 using 2
{
TR1=0;
}
/////////////////////////////////////////////////////////////
main()
{
PSB=1;
RST=0;
Delay(10,1,1);
RST=1;
Delay(1,10,1);
Delay(10,1,1);
LCMInit();
Delay(10,1,1);
EA=1;
EX0=0;
while(1)
{
//IE0=0;
EX0=0;
EA=1;
P1_6=1;
RigourTimer(2); //P1.6控制超聲波的發射,發射250us
P1_6=0;
RigourTimer(20); //避開盲區,以檢測回波
TMOD=0x10;
TH1=0;
TL1=0;
TR1=1; //開定時器
//開外部中斷1,關閉定時器1,測量回波返回時間
EA=1;
IT0=1;
EX0=1;
//Delay(20,1,50); //延時
c=((unsigned int)b<<8)+a;
DisplayInt(0,0,c); //LCD輸出定時器1寄存器的值
Delay(20,10,50);
WriteCommandLCM(0x02,1); //光標重新定位
Delay(1,10,50);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -