📄 delay.c
字号:
/************************************************************
文 件:delay.c
用 途:delay100us和delay10ms软件延时函数
Target : 任意AVR
Crystal: #define F_CPU 进行设置
说 明:请与delay.h配合使用
请根据实际定义 #define F_CPU 为晶振大小
有中断时,延时将不再准确
创 建:2008.1.29
修 改:2008.1.29
Copy Right (c) www.avrvi.com AVR与虚拟仪器
************************************************************/
#include "..\config.h"
//需要根据频率调整循环变量
#ifndef F_CPU
#define F_CPU 1000000 //晶振频率
#endif
/*******************************************
** 函数名称: void Delay100us(uint8 n)
** 功能描述: 100us延时函数
** 输 入: 延时的时间
** 输出 : 无
** 全局变量: 无
** 调用模块:
** 说明:最大参数为255
** 注意:如果中途有中断发生,延时将不只100us
********************************************/
#define CONT_DELAY100US_COUNT F_CPU/100000
void Delay100us(uint8 n) //最大255
{
uint8 i;
while(n--) //5 clk
{
i=CONT_DELAY100US_COUNT; //1 clk
while(--i)
{
NOP();
NOP();
NOP();
} //10 clk
}
}
/*******************************************
** 函数名称: void Delay10ms(uint8 n)
** 功能描述: 10ms延时函数
** 输 入: 延时的时间
** 输出 : 无
** 全局变量: 无
** 调用模块:
** 说明:最大参数为255
** 注意:如果中途有中断发生,延时将不只10ms
********************************************/
#define CONT_DELAY10MS_COUNT F_CPU/1000
void Delay10ms(uint8 n) //最大255
{
uint16 i;
while(n--) //5 clk
{
i=CONT_DELAY10MS_COUNT; //1 clk
while(--i)
{
NOP();
NOP();
NOP();
} //10 clk
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -