📄 delay.c
字号:
/*******************************************
* 文件名 : DELAY.C
* 功能 : 基本延时
* 占用资源: ----
* 程序员 : wyl(wyl-e@163.com)
* 日期 : 2007.07
* 包含文件: DELAY.H
* 说明 : 本模块仅定义了在12MHZ晶振频率下
的时间单位级上的延时,在晶振频率
为其它值时,应该采用通用延时程序,
以机器周期为计量单位,进行延时推算.
********************************************/
#include<_REG52_.H>
#include"DELAY.H"
#ifndef T_IS_KNOWABLE
/*******************************************
* 函数功能 : 基本延时程序 10T级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 10*cnt+12
T~Delay(0) = 9.
********************************************/
void Delay_10T(uchar cnt)
{
if(cnt==0)return;
while(--cnt)
{
_nop_(); _nop_();
_nop_(); _nop_();
};
}
/*******************************************
* 函数功能 : 基本延时程序 10E3T级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 1000*cnt+13
********************************************/
void Delay_E3T(uchar cnt)
{
while(cnt--)Delay_10T(99);
}
/*******************************************
* 函数功能 : 基本延时程序 10E5T级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 100021*cnt+13
********************************************/
void Delay_100E3T(uchar cnt)
{
while(cnt--)Delay_E3T(100);
}
/*******************************************
* 函数功能 : 基本延时程序 10E6T级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 1000231*cnt+13
********************************************/
void Delay_E6T(uchar cnt)
{
while(cnt--)Delay_100E3T(10);
}
#else
#if ((XTAL<=13)&&(XTAL>=11))
/*********************************************
*********12 MHZ晶振频率下的延时程序.**********
**********************************************/
/*******************************************
* 函数功能 : 基本延时程序 10Tus级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 10*cnt+12
T~Delay(0) = 9.
********************************************/
void Delay_10us(uchar cnt)
{
if(cnt==0)return;
while(--cnt)
{
_nop_(); _nop_();
_nop_(); _nop_();
};
}
/*******************************************
* 函数功能 : 基本延时程序 ms级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 1000*cnt+13
********************************************/
void Delay_ms(uchar cnt)
{
while(cnt--)Delay_10us(99);
}
/*******************************************
* 函数功能 : 基本延时程序 100ms级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 100021*cnt+13
********************************************/
void Delay_100ms(uchar cnt)
{
while(cnt--)Delay_ms(100);
}
/*******************************************
* 函数功能 : 基本延时程序 s级延时
* 入口参数 : (uchar cnt)
* 返回值 : (void)
* 说明 : 执行机器周期 = 1000231*cnt+13
********************************************/
void Delay_s(uchar cnt)
{
while(cnt--)Delay_100ms(10);
}
#endif
#endif
/*****************THE END*******************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -