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

📄 delay.c

📁 键盘操作 键盘扫描 用的是单片机mega16
💻 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 + -