delay.c

来自「简单的在ATMEGA64上移植ucosII」· C语言 代码 · 共 100 行

C
100
字号
#ifndef _DELAY_C_
#define _DELAY_C_
#endif

#include <include.h>

//#define ATmega8
#define ATmega64

// 执行11条指令的时间是0.994us,单条指令的时间是0.0904us
// 软件仿真是0.99us
#ifdef ATmega64			
	#define DelayUs() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");
#endif

// 执行8条指令的时间是1us,单条指令的时间是0.125us
//#ifdef ATmega8			
//	#define DelayUs() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");
//#endif

//5 us延时函数 软件仿真为5.06us
void Delay5us(void)					
{
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	//DelayUs();
	asm("nop");
	asm("nop");
	asm("nop");
	asm("nop");
}

//10 us延时函数 软件仿真为10.04us
void Delay10us(void)				
{
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	DelayUs();
	//DelayUs();
	asm("nop");
	asm("nop");
	asm("nop");
	asm("nop");
}

//1ms延时函数 软件仿真为1.00089ms
void DelayMs(void)								
{
	unsigned int i = 0;
	for (i = 0; i < (unsigned int)(11059*143/1000-2); i++)  // (XTAL << 7 + 15) >> 10 - 26
	{
		;
	}
}

////////////////////////////////////////////////////
// 1ms------1.00676ms
// 3ms------3.00944ms
// 5ms------5.01212ms
// 7ms------7.01479ms
// 10ms-----10.01881ms
// 50ms-----50.07234ms
// 100ms----100.13925ms
// 200ms----200.27308ms
// 300ms----300.40690ms
// 400ms----400.54516ms
// 500ms----500.67455ms
void DelayNms(unsigned int n)					//N ms延时函数
{
	unsigned int i = 0;
	for (i = 0; i < n; i++)
	{
		DelayMs();
	}
}

////////////////////////////////////////////////////
// 1s------1.00135353s
// 2s------2.00270191s

void DelayNs(unsigned char n)					//N s延时函数
{
	unsigned char i = 0;
	for(i = 0; i < n; i++)
	{
		WDR();
		DelayNms(1000);
	}
}
/*****************************************************************************************
**                            End Of File
******************************************************************************************/

⌨️ 快捷键说明

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