新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 几个延时子程序

几个延时子程序

作者: 时间:2016-11-10 来源:网络 收藏
/**************************************

延时时间为:8*i+10 us
要求延时1ms i=124时 延时为1002us 误差2us
2ms i=249时 延时为2002us 误差2us
**************************************/

本文引用地址:https://www.eepw.com.cn/article/201611/317522.htm

void delay(unsigned char i)
{
for(;i>0;--i);

}

/**************************************
延时时间为:6*i+11 us
要求延时1ms i=165时 延时为1001us 误差1us
2ms i=331时 延时为1997us 误差3us

**************************************/

void delay(unsigned char i)
{
while(i--);

}

/**************************************
延时时间为:2*i+5 us

**************************************/

void delay(unsigned char i)
{
while(--i);

}

以上如果加上了n个_nop_(),需将i换为(i+n);

/**************************************
延时时间为:20us*t+13us
**************************************/
void delay_20us(unsigned int t)
{
unsigned char j;
for(;t>0;t--)
for(j=4;j>0;j--);
}

/**************************************
延时时间为:50us*t+13us
**************************************/
void delay_50us(unsigned int t)
{
unsigned char j;
for(;t>0;t--)
for(j=19;j>0;j--);
}

/**************************************
延时时间为:100us*t+13us
**************************************/
void delay_100us(unsigned int t)
{
unsigned char j;
for(;t>0;t--)
for(j=44;j>0;j--);
}

/**************************************
延时时间为:978count*n+21us
要求延时1ms count=1时 延时为999us 误差1us
2ms count=2时 延时为1977us 误差23us
**************************************/
void delay1ms(int count)
{
int x,y;
for(x=0;x for(y=0;y<120;y++);
}



关键词: 延时子程

评论


技术专区

关闭