当前位置:文档之家› AVR单片机常用的延时函数

AVR单片机常用的延时函数

AVR单片机常用的延时函数
/******************************************************************** *******/
//C header files:Delay function for AVR
//MCU:ATmega8 or 16 or 32
//Version: 1.0beta
//The author:
/******************************************************************** *******/
#include<AVRdef.h>
void delay8RC_us(unsigned int time) //8Mhz内部RC震荡延时Xus
{
do
{
time--;
}
while(time>1);
}
void delay8RC_ms(unsigned int time) //8Mhz内部RC震荡延时Xms
{
while(time!=0)
{
delay8RC_us(1000);
time--;
}
}
/******************************************************************** **********/
void delay1M_1ms(void) //1Mhz延时1ms
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void delay1M_xms(unsigned int x) //1Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay1M_1ms();
}
/******************************************************************** **********/
void delay2M_1ms(void) //2Mhz延时1ms
{
unsigned char a,b;
for(b=4;b>0;b--)
for(a=248;a>0;a--);
NOP();
}
void delay2M_xms(unsigned int x) //2Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay2M_1ms();
}
}
/******************************************************************** **********/
void delay4M_1ms(void) //4Mhz延时1ms
{
unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=8;b>0;b--)
for(a=34;a>0;a--);
}
void delay4M_1us(void) //4Mhz延时1us
{
NOP();
NOP();
}
void delay4M_xms(unsigned int x) //4Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay4M_1ms();
}
/******************************************************************** **********/
void delay73782M_1us(void) //7.3782Mhz延时1us
{
unsigned char a;
for(a=2;a>0;a--);
}
void delay73782M_1ms(void) //7.3782Mhz延时1ms
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=254;b>0;b--)
for(a=13;a>0;a--);
}
void delay73782M_xms(unsigned int x) //7.3782Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay73782M_1ms();
}
}
/******************************************************************** **********/
void delay8M_1ms(void) //8Mhz延时1ms
{
unsigned char a,b,c;
for(c=11;c>0;c--)
for(b=4;b>0;b--)
for(a=89;a>0;a--);
}
void delay8M_1us(void) //8Mhz延时1us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=1;a>0;a--);
}
/********************************************************************
**********/
void delay12M_1us(void) //12Mhz延时1us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=3;a>0;a--);
}
void delay12M_1ms(void) //12Mhz延时1ms
{
unsigned char a,b;
for(b=129;b>0;b--)
for(a=45;a>0;a--);
}
void delay12M_xms(unsigned int x) //12Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay12M_1ms();
}
}
/******************************************************************** **********/
void delay16M_1us(void) //16Mhz延时1us
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=5;a>0;a--);
}
void delay16M_1ms(void) //16Mhz延时1ms
{
unsigned char a,b,c;
for(c=17;c>0;c--)
for(b=134;b>0;b--)
for(a=2;a>0;a--);
}
void delay16M_xms(unsigned int x) //16Mhz延时xms
{
unsigned int i;
for(i=0;i<x;i++)
{
delay16M_1ms(); }
}。

相关主题