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

📄 timedelay.c

📁 自动小车 寻找白线 程序。 采用后轮驱动mega系列单片机控制
💻 C
字号:
/************************************************************************
TIMEDELAY.C实现了六个级别的软件延时,分别为:
void delay_us();			               微秒级延时程序
void delay_10us(unsigned int M);           10微秒级延时程序
void delay_100us(unsigned int M);          100微秒级延时程序
void delay_ms(unsigned int M);	           毫秒级延时程序
void delay_10ms(unsigned int M);           10毫秒级延时程序
void delay_100ms(unsigned char M);         100毫秒级延时程序
void delay_s(unsigned char M);	           秒级延时程序

 TIMEDELAY.C中使用AVRStudio仿真,void delay_us()函数中定时为1us;
 后续微秒级延时函数调用此函数实现定时。函数形参M用法如下:
 如延时50us,调用delay_10us(5).注释部分为误差分析,M取值100,1000,5000时, 
 AVRStudio仿真中实际运行时间为TIME,ERROR为计算所得误差。
************************************************************************/

#include <iom16v.h>
#include <macros.h>


/*********************************delay_us()************************************
 ERROR=0
********************************************************************************/
void delay_us()                    

{
 	NOP();
}

/*********************************delay_10us(unsigned int M)******************
M=1,TIME=17.50,ERROR=75%;  (注意!!!误差较大,请选用其他量级)
M=10,TIME=107.50,ERROR=7.5%;   (注意!!!误差较大,请选用其他量级)
M=100,TIME=1007.50,ERROR=0.75%;
M=1000,TIME=10008.25,ERROR=0.0825%; 
M=5000,TIME=50012.25,ERROR=0.0245%;
******************************************************************************/
void delay_10us(unsigned int M)   
{  
   unsigned int i;
   while(M--)
   { 
   	 unsigned int i=4;
     while(i--)
	   {
		 delay_us();
		 NOP();
		}
	 NOP();
	 NOP();
	 NOP();
   }
}

/*********************************delay_100us(unsigned int M)***********
M=1,TIME=107.50,ERROR=7.5%;  (注意!!!误差较大,请选用其他量级)
M=10,TIME=1007.50,ERROR=0.75%;
M=100,TIME=10007.50,ERROR=0.075%;
M=1000,TIME=100008.25,ERROR=0.00825%; 
M=5000,TIME=500012.25,ERROR=0.00245%;
************************************************************************/

void delay_100us(unsigned int M)  
{   
    unsigned int i;
    while(M--)
	{
	  unsigned int i=52;
	  while(i--)                
        {
		 delay_us();
		 NOP();
		}
		NOP();
		NOP();
		NOP();
   }
}

/*********************************delay_ms(unsigned int M)***************************
M=1,TIME=1007.50,ERROR=0.75%; 
M=10,TIME=10007.50,ERROR=0.075%;
M=100,TIME=100007.50,ERROR=0.0075%;
M=1000,TIME=1000008.25,ERROR=0.000825%; 
M=5000,TIME=5000012.25,ERROR=0.000245%;
***********************************************************************/
void delay_ms(unsigned int M) 
{  unsigned int i;
	while(M--)
	{ unsigned int i=531;
		while(i--)                
        {
		 delay_us();
		 NOP();
		}
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		NOP();
		
       }
}



/*********************************delay_10ms(unsigned int M)***************************/
void delay_10ms(unsigned int  M) 
{
	while(M--)
	{
	  delay_ms(10);
	}
}



/*********************************delay_100ms(unsigned int M)***************************/
void delay_100ms(unsigned int  M) 
{
	while(M--)
	{
	 delay_ms(100);
	}
}



/*********************************delay_s(unsigned int M)***************************/
void delay_s(unsigned int M) 
{
while(M--)
	{
		delay_ms(1000);
	}
}


⌨️ 快捷键说明

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