PIC延时程序

2019-03-25 19:53发布

逛过许多论坛!看国许多帖子!从来没回过任何一个贴!
不过eeworld是第一个让我有回帖冲动的地方!
所以决定在这边安家了!
一下呈现小代码两个!
大家以后用PIC做项目的时候可以把他加进去!


/*********delay.h********************************************/

#ifndef        XTAL_FREQ
#define        XTAL_FREQ        4MHZ                /* Crystal frequency in MHz */
#endif

#define        MHZ        *1000L                        /* number of kHz in a MHz */
#define        KHZ        *1                        /* number of kHz in a kHz */

#if        XTAL_FREQ >= 12MHZ

#define        DelayUs(x)        { unsigned char _dcnt;
                          _dcnt = (x)*((XTAL_FREQ)/(12MHZ));
                          while(--_dcnt != 0)
                                  continue; }
#else

#define        DelayUs(x)        { unsigned char _dcnt;
                          _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1;
                          while(--_dcnt != 0)
                                  continue; }
#endif

extern void DelayMs(unsigned char);


/**************************delay.c***********************************/
/*
*        Delay functions
*        See delay.h for details
*
*        Make sure this code is compiled with full optimization!!!
*/

#include        "delay.h"
void
DelayMs(unsigned char cnt)
{
#if        XTAL_FREQ <= 2MHZ
        do {
                DelayUs(996);
        } while(--cnt);
#endif

#if    XTAL_FREQ > 2MHZ       
        unsigned char        i;
        do {
                i = 4;
                do {
                        DelayUs(250);
                } while(--i);
        } while(--cnt);
#endif
}

鄙人实在太穷,最近又是金融危机!还是不要给分了!以后发财了帮你们补上! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。