幾個延時子程序
延時時間為:8*i+10 us
要求延時1ms i=124時 延時為1002us 誤差2us
2ms i=249時 延時為2002us 誤差2us
**************************************/
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
}
評論