51单片机精确延时函数集锦

mengkun 6.7K 1

以下延时函数适用于C51系列单片机,晶振频率:12MHZ

  1. /******************************************************************************* 
  2. * 函 数 名         : Delay50us 
  3. * 函数功能         : 延时函数,延时n*50us 
  4. * 输    入         : n-延时次数 
  5. * 输    出         : 无 
  6. *******************************************************************************/  
  7. void Delay50us(unsigned int n)  
  8. {  
  9.     unsigned int a;  
  10.     for(; n>0; n--)  
  11.         for(a=19; a>0; a--);   
  12. }  
  13.   
  14. /******************************************************************************* 
  15. * 函 数 名         : Delay10ms (单个) 
  16. * 函数功能         : 延时函数,延时10ms 
  17. * 输    入         : 无 
  18. * 输    出         : 无 
  19. *******************************************************************************/  
  20. void Delay10ms(void)  
  21. {  
  22.     unsigned char i, j, k;  
  23.     for(i=5; i>0; i--)  
  24.         for(j=4; j>0; j--)  
  25.             for(k=248; k>0; k--);  
  26. }  
  27.   
  28. /******************************************************************************* 
  29. * 函 数 名         : Delay10ms (多个) 
  30. * 函数功能         : 延时函数,延时n*10ms 
  31. * 输    入         : n-延时次数 
  32. * 输    出         : 无 
  33. *******************************************************************************/  
  34. void Delay10ms(unsigned int n)  
  35. {  
  36.     unsigned char a, b;  
  37.     for (; n>0; n--)  
  38.     {  
  39.         for (b=38; b>0; b--)  
  40.         {  
  41.             for (a=130; a>0; a--);  
  42.         }  
  43.     }      
  44. }  
  45.   
  46. /******************************************************************************* 
  47. * 函 数 名         : Delay50ms 
  48. * 函数功能         : 延时函数,延时 n*50ms 
  49. * 输    入         : n-延时次数 
  50. * 输    出         : 无 
  51. *******************************************************************************/  
  52. void Delay50ms(unsigned int n)  
  53. {  
  54.     unsigned int j;  
  55.         for(; n>0; n--)  
  56.             for(j=6245; j>0; j--);   
  57. }  
  58.   
  59. /******************************************************************************* 
  60. * 函 数 名         : Delay200ms 
  61. * 函数功能         : 延时函数,延时200ms 
  62. * 输    入         : 无 
  63. * 输    出         : 无 
  64. *******************************************************************************/  
  65. void Delay200ms(void)  
  66. {  
  67.     unsigned char i,j,k;  
  68.     for(i=5;    i>0; i--)  
  69.         for(j=132;  j>0; j--)  
  70.             for(k=150; k>0; k--);  
  71. }  
  72.   
  73. /******************************************************************************* 
  74. * 函 数 名         : Delay500ms 
  75. * 函数功能         : 延时函数,延时500ms 
  76. * 输    入         : 无 
  77. * 输    出         : 无 
  78. *******************************************************************************/   
  79.  void Delay500ms(void)       
  80.  {      
  81.     unsigned char i, j, k;   
  82.     for(i=15; i>0; i--)      
  83.         for(j=202; j>0; j--)       
  84.             for(k=81; k>0; k--);     
  85.  }  
  86.   
  87. /******************************************************************************* 
  88. * 函 数 名         : Delay1s 
  89. * 函数功能         : 延时函数,延时1s 
  90. * 输    入         : 无 
  91. * 输    出         : 无 
  92. *******************************************************************************/  
  93. void Delay1s(void)  
  94. {  
  95.     unsigned char h, i, j, k;  
  96.         for(h=5; h>0; h--)  
  97.             for(i=4; i>0; i--)  
  98.                 for(j=116; j>0; j--)  
  99.                     for(k=214; k>0; k--);  
  100. }  

发表评论 取消回复
表情 图片 链接 代码

  1. mengkun
    mengkun 站长

    补充一个Delay1ms

    /******************************************************************************* 
    * 函 数 名          : Delay1ms (多个) 
    * 函数功能         : 延时函数,延时n*1ms 
    * 输      入         : n-延时次数 
    * 输      出         : 无 
    *******************************************************************************/  
    void Delay1ms(unsigned int n)
    {
    	unsigned char i, j;	
    	for (; n>0; n--)
    		for(i=0;i<10;i++)
    			for(j=0;j<33;j++);	
    }
    
分享