📄 delay.c
字号:
/***************************************/
/* CopyRight 2005 LiuYong *
/****************************************
文件名称:Delay.C
文件版本:V1.0
创建人员:LiuYong cau_ly@163.com
创建日期:2005.5.27
功能描述:常用的延时程序(非定时器)
相关硬件:at89s52兼容单片机,晶体11.0592M
修改记录:
***************************************/
#include <intrins.h>
#define uchar unsigned char
/*************************************************
* 函数名称:void Delay10us(uchar ucCnt)
* 创建日期:2005.5.31
* 功能描述:精确延时10微秒。延时时间为:delay time=(9*ucCnt+4)*12/11.0592
* 入口参数:ucCnt,10微秒的倍数
* 返回值: 无
* 修改日志:
* 对应的汇编程序为
delay1:
C:0x0026 00 NOP
C:0x0027 00 NOP
C:0x0028 00 NOP
C:0x0029 00 NOP
C:0x002A 00 NOP
C:0x002B 00 NOP
C:0x002C 00 NOP
C:0x002D DFF7 DJNZ R7,delay1(C:0026)
*************************************************
void RigDelay10us(uchar ucCnt)
{
do
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}while(--ucCnt);
}
/*************************************************
* 函数名称:void Delay840us(void)
* 创建日期:2005.6.8
* 功能描述:精确延时844us
* 入口参数:无
* 返回值: 无
* 修改日志:
* 对应的汇编程序为
C:0x000F 7F02 MOV R7,#0x02
C:0x0011 7EC0 MOV R6,#0xC0
C:0x0013 DEFE DJNZ R6,C:0013
C:0x0015 DFFA DJNZ R7,C:0011
C:0x0017 22 RET
*************************************************
void Delay840us(void)
{
uchar i,j;
for(i=2;i>0;i--)
{
for(j=192;j>0;j--)
{
;
}
}
}
/*************************************************
* 函数名称:void Delay1000us(void)
* 创建日期:2005.6.8
* 功能描述:精确延时1000us
* 入口参数:无
* 返回值: 无
* 修改日志:
* 对应的汇编程序为
C:0x000F 7F02 MOV R7,#0x02
C:0x0011 7EC0 MOV R6,#0xE4
C:0x0013 DEFE DJNZ R6,C:0013
C:0x0015 DFFA DJNZ R7,C:0011
C:0x0017 22 RET
*************************************************/
void Delay1000us(void)
{
uchar i,j;
for(i=2;i>0;i--)
{
for(j=228;j>0;j--)
{
;
}
}
}
/*************************************************
* 函数名称:void Delay4700us(void)
* 创建日期:2005.6.8
* 功能描述:精确延时4681us
* 入口参数:无
* 返回值: 无
* 修改日志:
* 对应的汇编程序为
C:0x000F 7F02 MOV R7,#0x0A
C:0x0011 7EC0 MOV R6,#0xD6
C:0x0013 DEFE DJNZ R6,C:0013
C:0x0015 DFFA DJNZ R7,C:0011
C:0x0017 22 RET
*************************************************
void Delay4700us(void)
{
uchar i,j;
for(i=10;i>0;i--)
{
for(j=214;j>0;j--)
{
;
}
}
}
/*************************************************
* 函数名称:void Delay(void)
* 创建日期:2005.6.8
* 功能描述:延时1s
* 入口参数:无
* 返回值: 无
* 修改日志:
*************************************************/
void Delay(void)
{
uchar i,j;
for(i=5;i>0;i--)
{
for(j=200;j>0;j--)
{
Delay1000us();
}
}
}
/*************************************************
* 函数名称:void Delay(void)
* 创建日期:2005.6.8
* 功能描述:毫秒延时
* 入口参数:ucNo:要延时的毫秒数
* 返回值: 无
* 修改日志:
*************************************************
void DelayMs(uchar ucNo)
{
uchar i;
for(i=ucNo;i>0;i--)
{
Delay1000us();
}
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -