super_wave.c

来自「 超声波经典经典应用」· C语言 代码 · 共 71 行

C
71
字号
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit trig = P2^1;
sbit echo = P3^2;
bit flag = 0;
uint wave_time;
void delay_20us(){

	uchar a ;
	for(a = 0;a < 200;a++);
}

void delay(uint ms){
	
	uchar a;
	for(;ms > 0;ms--){		
		for(a = 0;a < 110;a++)
		;	
	}
}
int main(void){

	uint distance = 0;
	P1 = 0xfd;
   TMOD = 0x01;
   TH0 = 0;
   TL0 = 0;
   trig = 0;

   while(1){
   

	  EA = 0;
	  trig = 1;
	  delay_20us();
	  trig = 0;

	  while(echo == 0);

	  TR0 = 1;
	  EX0 = 1;
	  IT0 = 0;
	  EA = 1;
	  delay(20);

	  if(flag == 1){
	  
	  	flag = 0;
		distance = wave_time/58;
		if(distance < 20)
			P1 = 0x55;
	  	else
			P1 = 0xaa;
	  }  
   }


}

void inter() interrupt 0{

	TR0 = 0;
	EX0 = 0;
	wave_time = TH0*256 + TL0;
	TH0 = 0;
	TL0 = 0;
	flag = 1;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?