driver_delay.c

来自「增强型51单片机程序模板」· C语言 代码 · 共 281 行

C
281 行
字号
/*********************************************************************************************
文 件 名:
创 建 人:
创建日期:
组成部分:
描    述:
修 改 人:
修改日期:
修改内容:
*********************************************************************************************/
#include "user.h"
#include "intrins.h"

#ifdef DEL
/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay5us(void)
{
	#ifdef FQR1
	_nop_();											//约为5.43us
	#else
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#endif

}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay10us(void)
{
	#ifdef FRQ1
	Delay5us();
	_nop_();											//约为10.85us
	#else
	Delay5us();											//约为10.55us
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay40us(void)
{
	#ifdef FQR1
	Delay10us();										//约为40.15us
	Delay10us();
	Delay10us();
	Delay5us();
	#else
	Delay10us();										//约为40.15us
	Delay10us();
	Delay10us();
	Delay5us();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay50us(void)
{
	#ifdef FRQ1
	Delay40us();			  							//约为51us
	Delay5us();
	_nop_();
	#else
	Delay40us();			  							//约为50.46us
	Delay5us();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay100us(void)
{
	#ifdef FRQ1
	Delay50us();			 							//约为100.92us
	Delay40us();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#else
	Delay50us();			 							//约为100.1us
	Delay40us();
	Delay5us();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay200us(void)
{
	#ifdef FRQ1
	Delay100us();						  				//约为200.74us
	Delay50us();
	Delay40us();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#else
	Delay100us();						  				//约为200.2us
	Delay50us();
	Delay40us();
	Delay5us();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
********************************************************************************************/
void Delay600us(void)
{
	#ifdef FRQ1
	Delay200us();	  									//约为600.05us
	Delay200us();
	Delay100us();
	Delay50us();
	Delay40us();
	_nop_();
	_nop_();
	#else
	Delay200us();	  									//约为600.01us
	Delay200us();
	Delay100us();
	Delay50us();
	Delay40us();
	Delay5us();
	_nop_();
	_nop_();
	_nop_();
	#endif
}

/*********************************************************************************************
函 数 名:
功能描述:
全局变量:
局部变量:
参数说明:
输    入:
输    出:
创 建 人:
创建日期: 
修 改 人:
日    期:
函数说明: 					
*********************************************************************************************/
void Delayms(uint8 i)
{
	#ifdef FRQ1
	while(i--)
		{
			Delay600us();				 					//1ms实际延时为1.013ms
			Delay200us();
			Delay100us();
			Delay50us();
			Delay40us();
		}
	#else
		while(i--)
		{
			Delay600us();				 					//1ms实际延时为1.00098ms
			Delay200us();
			Delay100us();
			Delay50us();
			Delay40us();
		}
	#endif
}
#endif

⌨️ 快捷键说明

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