今天是: <%response.write formatdatetime(date(),1)%> 电子制作天地网站欢迎您的光临,欢迎提出宝贵意见或建议。本站信息产业部备案: 粤ICP备05114582号
 
C51全局初始化及精确延时程序
51单片机精确延时程序

时间:2013-3-4 21:41:20 来源:互联网 作者:不详 编辑: 【关闭


关键字:单片机延时程序

/*********************************************************************************************************
*                                          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

◆相关文章◆
◆ 编辑推荐 ◆
用户:
更多评论
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。60个字以内
留言:
验证码:
 
 
 

免责声明:
●本站所有内容均来自网络,以学习为目的,如果侵犯了您的利益,请来信告知,立即删除,站长邮件为"diy+dzdiy.com",请将"+"变更为"@"
●电子制作存在风险,请注意人身安全,如果您在根据本站电路进行制作过程中发生伤害,本站不负任何责任。

版权所有:www.dzdiy.com © 2001-2019 本站信息产业部备案: 粤ICP备05114582号