×
嵌入式 > 技术百科 > 详情

几个延时子程序

发布时间:2020-06-06 发布时间:
|
/**************************************

  延时时间为: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   for(y=0;y<120;y++);
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
关于LED大屏幕保养你搞知道这些