注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

易拉罐的博客

心静自然凉

 
 
 

日志

 
 

转 C51全局初始化及精确延时程序  

2013-12-19 19:36:20|  分类: 单片机开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

/*********************************************************************************************************
*
*                                         Global macro definitions
*
*********************************************************************************************************/
    #include               // AT89S52
    #include              // Absolute address access
    #include              // Related to the string
    #include             // Related to Assembly Language
    #include               // Unicode conversion
    #include                // Mathematics functions packet
    #include               // Standard input or output
    #include              // Memory Management
    #define TRUE    1
    #define FALSE   0
    #define bool    bit             // Boolean variable
    #define uchar   unsigned char
    #define uint    unsigned int
    #define ulong   unsigned long
    #define FOSC    12000000UL      // The frequency of crystal
    #define NOP     _nop_();
/*********************************************************************************************************
*
*                                          Accurate delay(5us,10us)
*
*********************************************************************************************************/
    void delay10us (void)            // FOSC->12000000
    {
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
    }
    void delay5us (void)             // FOSC->12000000
    {
        NOP
    }
/*********************************************************************************************************
*
*                                          Accurate delay(1ms~255ms)
*
*********************************************************************************************************/
    #define WAITE_HI (FOSC / 2 / 12 / 1000 >> 8 )
    #define WAITE_LOW (FOSC / 2 / 12 / 1000 & 0xFF)
    void delayms (uchar time)
    {
        do
        {
            uchar j;
            #if WAITE_HI != 0
                j = 0;
                {
                    uchar i;
                    for(i = WAITE_HI; i > 0; i--)
                    {
                        while (--j);
                    }
                }
            #endif
            #if WAITE_LOW != 0
                j = WAITE_LOW;
                while (--j);
            #endif
        }while (--time);
    }

 
 

  评论这张
 
阅读(314)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017