标题: DIY 较为准确的单片机延时 [打印本页]

作者: liuqq    时间: 2015-5-20 18:30
标题: DIY 较为准确的单片机延时
自己总结,不完善,欢迎指正!!!!

主函数调用Delay10us( )时,先执行一个LCALL指令(2 μs),然后执行6个_NOP_( )语句(6 μs),最后执行了一个RET指令(2 μs),所以执行上述函数时共需要10 μs。
void Delay10us( )
{
    _NOP_( );
    _NOP_( );
    _NOP_( );
    _NOP_( );
    _NOP_( );
    _NOP_( );
  }
/*****************************************************/
//12MHZ 晶振 延时1s
/****************************************************/
void delay1s()
{
        unsigned char h,i,j,k;        
        for(h=5;h>0;h--)      
        for(i=4;i>0;i--)        
        for(j=116;j>0;j--)        
        for(k=214;k>0;k--);
}
/*****************************************************/
//12MHZ 晶振 延时10ms
/****************************************************/
void delay10ms()
{
          unsigned char i,j,k;   
        for(i=5;i>0;i--)        
        for(j=4;j>0;j--)        
        for(k=248;k>0;k--);
}
/*****************************************************/
//12MHZ 晶振 延时200ms
/****************************************************/
void delay200ms(void)
{
          unsigned char i,j,k;
        for(i=5;i>0;i--)        
        for(j=132;j>0;j--)         
        for(k=150;k>0;k--);
}
/*****************************************************/
//12MHZ 晶振 延时500ms
/****************************************************/
void delay500ms()
{
        unsigned char i,j,k;         
        for(i=15;i>0;i--)         
        for(j=202;j>0;j--)         
        for(k=81;k>0;k--);
}


延时模块:其中问号代表要填的数,要延时多少,到表格中去找数据,然后填上就OK!切忌3条FOR语句不能颠倒顺序
void Delay()
{
    unsigned char a,b,c;
    for(a=0;a<?;a++)
    for(b=0;b<?;b++)
    for(c=0;c<?;c++);
}  
延时时间           a的值                 b的值               c的值       延时误差(us)
10us                       1                       1                       1                         -0.5      
20us                       1                       1                       8                         0  
30us                       1                       1                       15                       +0.5
40us                       2                       1                       9                         0  
50us                       1                       1                       28                           0  
60us                       1                       1                       35                       +0.5
70us                       1                       1                       42                       +1
80us                       1                       1                       48                           0
90us                       1                       1                       55                       +0.5  
100us                     1                       1                       61                       -0.5  
200us                     1                       1                       128                       0  
300us                     3                       1                       63                       +1.5  
400us                     2                       1                       129                       0  
500us                     5                       1                       63                       +0.5  
600us                     6                       1                       63                         0  
700us                     7                       1                       63                           -0.5  
800us                     1                       3                       175                       +0.5  
900us                     9                       1                       63                         -1.5  
1ms                        1                       3                       219                       -1.5
2ms                        2                       3                       220                       +3
3ms                        3                       3                       220                       +3
Xms                        X                       3                       220                       +3         
(X的范围为2到255)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1