找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2141|回复: 0
打印 上一主题 下一主题
收起左侧

DIY 较为准确的单片机延时

[复制链接]
跳转到指定楼层
楼主
ID:80436 发表于 2015-5-20 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己总结,不完善,欢迎指正!!!!

主函数调用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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表