ultrasonic.c

来自「超声波传感器在凌阳16位单片机上的C语言程序」· C语言 代码 · 共 46 行

C
46
字号
#include "spce061a.h"
#include "MyBit.h"

#define Send_ctr	A8     	//高有效
#define Receive		A9		//接收到有下降沿	

#define Send_ctr_Dir	A8_Dir     	//高有效
#define Receive_Dir		A9_Dir		//接收到有下降沿

void UltrasonicInit(void)
{
	Send_ctr_Dir=1;//设置成输出
	Receive_Dir=0;//设置成输入
	delay_xus(1);
	Send_ctr=0;//不发射
	Receive=1;//等待接收
	delay_xus(1);
	
	*P_TimerA_Ctrl=C_TMA1_FOSC_256|C_TMA2_1;//定时器打开
}	

unsigned int GetDistance(void)
{
	unsigned int TAlong=0;
	float T;
	float Long=0;
	Send_ctr=1;
	/*while(!Send_ctr)
	{
		Send_ctr=1;
		*P_Watchdog_Clear=1;//发射
	}*/
	*P_TimerA_Data=0;
	while(Receive)*P_Watchdog_Clear=1;//等待接收
	TAlong=*P_TimerA_Data;
	T=((float)TAlong)*(1/(49152.000/256));//放大了1000倍的时间,所以是毫秒
	Long=(340*T)/2;//毫米
	
	Send_ctr=0;
	while(Send_ctr)
	{
		Send_ctr=0;
		*P_Watchdog_Clear=1;//停止发射
	}
	return( (unsigned int)Long );
}

⌨️ 快捷键说明

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