📄 delay.h
字号:
/**********************************************************
MCU AT89C2951 晶振 12MHz
对于微妙级延时 必须使用 _nop_();
**********************************************************/
/*******************************************************************************
精确延时函数
delay_1() 1个时钟周期
delay_10() 10个时钟周期
delay_100() 100个时钟周期
delay_1000() 1000个时钟周期
delay_1000000() 1000000个时钟周期
非精确延时函数
delay_8us(unsigned char n) n倍8个时钟周期的整数倍
delay_8ms(unsigned char n) n倍1000个时钟周期的整数倍 误差千份之八
delay_8s(unsigned char n) n倍1000000个时钟周期的整数倍 误差百万份之八
delay_us(unsigedn char n) n倍8个时钟周期的整数倍
delay_ms(unsigend char n) 约等于毫秒
delay_ss(unsigned char n) 约等于秒
delay_0(unsigned char n) 1个单位延时
delay_00(unsigned char n) 10个单位延时
delay_000(unsigned char n) 100个单位延时
delay_0000(unsigned char n) 1000个单位延时
*******************************************************************************/
//#ifdef DELAY_1
/*
//delay_1us() 1个时钟周期
#define delay_1us() _nop_()
//delay_10us() 10个时钟周期
void delay_10us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
//delay_100us() 100个时钟周期
void delay_100us(void)
{
unsigned char i;
for(i=47;i>0;i--)
{
;
}
_nop_();
}
*/
//delay_1ms() 1000个时钟周期
void delay_1ms(void)
{
unsigned char i,j;
for(j=38;j>0;j--)
{
;
}
for(i=9;i>0;i--)
{
_nop_();
for(j=49;j>0;j--)
{
;
}
}
}
//delay_1s() 1000000个时钟周期
void delay_1s(void)
{
unsigned char i,j,k;
_nop_();
for(j=46;j>0;j--)
{
;
}
for(j=99;j>0;j--)
{
_nop_();
for(k=48;k>0;k--)
{
;
}
}
for(i=99;i>0;i--)
{
for(j=48;j>0;j--)
{
;
}
for(j=99;j>0;j--)
{
_nop_();
for(k=48;k>0;k--)
{
;
}
}
}
}
//delay_us(unsigned char n) n倍8个时钟周期的整数倍
void delay_us(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
{
;
}
}
//delay_ms(unsigned char n) n倍1ms个时钟周期的整数倍 误差千分之8
void delay_ms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
{
delay_1ms();
}
}
//delay_ss(unsigned char n) n倍1s个时钟周期的整数倍 误差百万分之8
void delay_ss(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
{
delay_1s();
}
}
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -