/*****************************************************************************
文件名称:Delay.h
文件标识:_DELAY_H_
摘 要:AVR系列单片机的通用软件延时头文件
当前版本:V1.0
*****************************************************************************/
#ifndef _DELAY_H_
#define _DELAY_H_
#include
#include
#ifndef CRYSTAL
#define CRYSTAL 8.0 //默认晶振频率为8.0MHz(可在主程序文件中修改)
#endif
/*****************************************************************************
以下三个宏是参数预修正宏,它们在任意设定的晶振频率下均能实现准确的延时
*****************************************************************************/
#define delay_s(n) delay_ms(1000*(n))
#define delay_ms(n) wait_ms(((n)*CRYSTAL-0.017)/(CRYSTAL+0.006))
#define delay_us(n) wait_us((n)>14.0/CRYSTAL?((n)*CRYSTAL-8.0)/6.0:1)
/*****************************************************************************
函数名称:wait_us
函数参数:n
描 述:延时 8+6*n 个时钟周期
*****************************************************************************/
void wait_us( UINT16 n )
{
do{
n--;
}while(n);
}
/*****************************************************************************
函数名称:wait_ms
函数参数:n
描 述:延时 n 毫秒,约有 17+6*n 个时钟周期的正向误差
*****************************************************************************/
void wait_ms( UINT16 n )
{
do{
delay_us(1000);
}while(--n);
}
#endif
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』