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

📄 timedelay.c

📁 atmega16单片机AD转换源代码
💻 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时, 
 AVRStudio仿真中实际运行时间为TIME,ERROR为计算所得误差。
************************************************************************/

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



void delay_us()                    //ERROR=0

{
 	unsigned char M;
	NOP();
	
}

void delay_10us(unsigned int M)   //M=100,TIME=995,ERROR=0.5%

{   
   while(M--)
   { 
     unsigned int I=4;
     do            
      {
       delay_us();
	  }while(I--) ;
   }
}

void delay_100us(unsigned int M)  // M=100,TIME=10000.75,ERROR=0.0075%

{ 
    while(M--);
	{
	  unsigned int I=5286;
		do                 
        {
          delay_us();
	      NOP();
	    }while(I--);
   }
}

void delay_ms(unsigned int M) //M=100,TIME=99996.63,ERROR=0.00337%
{
	while(M--)
	{
		unsigned char I=198;
		unsigned char R=3;
		do                 
          {
           delay_us();
		   delay_us();
		   delay_us();
		   delay_us();
	      } while(I--);
        while(R--)  
	      {
	       NOP();
	      }
		  NOP();
	      NOP();
		  NOP();
	 }
}

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

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

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

⌨️ 快捷键说明

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