C51全局初始化及精确延时程序,51单片机精确延时程序

电子说

1.3w人已加入

描述

C51全局初始化及精确延时程序,51单片机精确延时程序

关键字:单片机延时程序

/*********************************************************************************************************
*                                          Initialization Program
*                                               QiZhao,2007
*                                           All Rights Reserved
* File      : initial.h
* By        : QiZhao
* Contact   : 
zq1987731@163.com
*
* Version   : V2.1 γ
* Corrector : QiZhao
* Date      : 2008.2.1 (Last modified)
*
* Remarks   : Common set of macro definitions keyword, and by setting controlled
*             crystal oscillator frequency precision delay subroutine.
*
*********************************************************************************************************/
    #ifndef   _initial_h_
    #define   _initial_h_
/*********************************************************************************************************
*
*                                         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);
    }
/*********************************************************************************************************
*
*                                            Includes not repeat
*
*********************************************************************************************************/
    #endif
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分