⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csb.c

📁 使用51单片机进行超声波测距
💻 C
字号:
#include <intrins.h>
#include <SerialLcd.h>
#include <reg51f.h>
//#include <reg52.h>

//晶振22.1184	一个机器周期0.5425us

sbit csbout1 = P1^0;
sbit INT = P1^2;
 
uint TimeL,TimeN;
float k	,h;
 	

#define uchar unsigned char
#define uint  unsigned int


void delaycsb( uint n )
{
	while( n-- );
}

void CsbSend ( uchar k )
{
	uchar i = 0;

	for( i = 0; i < k; i++ )//一个40KHZ的方波
	{
		 csbout1 = 0;
		 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();  _nop_(); 
		 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();	_nop_();  _nop_();

		 csbout1 = 1;
		 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();  _nop_();  
		 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();	_nop_();  _nop_();
	}

}


void inital( void )
{
	TMOD = 0x01;
	ET0  = 0;//定时器中断关闭	//dd
	IT0  = 1;//下降沿中断
	EA   = 0;
	TR0  = 0;//dd

}


void ddCsb(void)
{

 	k = 0;
	TimeL = 0;
	TimeN = 0;
	INT = 1;

    TH0 = 0;
	TL0 = 0;
	TR0 = 1;
	CsbSend ( 3 );

    while( INT == 1); //等待下降沿

	{
	   TimeN += TH0;
	   TimeN <<= 8;
	   TimeN += TL0;
	     
	k = ( ( ( TimeN ) * 0.5425 ) * 17.0 ) / 100;

 	DispNum( 0x94,k,TimeN ,0x9c );
	TR0 = 0;
	}

	while( INT == 0); // 等待下降沿结束


}


⌨️ 快捷键说明

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