1ms延时程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、
void delay(unsigned int x) //延时0.14ms,无误差(实测12mhz时延时0.12ms,
误差16us,此为网上较为精确的延时程序)
{
uchar i;
源自文库while(x--)
{
for (i = 0; i<13; i++)
{}
}
}
二、
void delay(uint i)//12MHZ延时0.1ms,误差11us(调用子程序所需时间)
delay(3);//延时0.311ms,懂了吗?
delay(10);//延时1.011ms
delay(100);//延时10.011ms,数值很大的话,这误差就可以忽略不计了
{uchar j,k;
for (j=i; j>0; j--)
for(k=0;k<30;k++);
}
注:误差都是由于调用子程序需要时间引起的,不是程序里面的误差,这是必然的,
不可避免的,所以单片机精灵的延时都是固定的延时程序(新手用延时,高手都是用定时器的)。
比如第二个程序:
delay(2);//误差仍未11us,即延时0.1×2+0.011=0.211ms
/*******************************************************************************
*函数名: delay()
*函数功能:精确延时
*输入: x
*输出:无
*******************************************************************************/
void delay(unsigned int x) //延时0.14ms,无误差(实测12mhz时延时0.12ms,
误差16us,此为网上较为精确的延时程序)
{
uchar i;
源自文库while(x--)
{
for (i = 0; i<13; i++)
{}
}
}
二、
void delay(uint i)//12MHZ延时0.1ms,误差11us(调用子程序所需时间)
delay(3);//延时0.311ms,懂了吗?
delay(10);//延时1.011ms
delay(100);//延时10.011ms,数值很大的话,这误差就可以忽略不计了
{uchar j,k;
for (j=i; j>0; j--)
for(k=0;k<30;k++);
}
注:误差都是由于调用子程序需要时间引起的,不是程序里面的误差,这是必然的,
不可避免的,所以单片机精灵的延时都是固定的延时程序(新手用延时,高手都是用定时器的)。
比如第二个程序:
delay(2);//误差仍未11us,即延时0.1×2+0.011=0.211ms
/*******************************************************************************
*函数名: delay()
*函数功能:精确延时
*输入: x
*输出:无
*******************************************************************************/