原创 单片机延时程序

2010-8-22 11:27 5442 7 7 分类: MCU/ 嵌入式

12T和1T单片机us和ms级延时模块


 


Delay.c


/*


 * 文 件 名:Delay.c


 * 芯    片:STC12C5A60S2


 * 晶    振:12MHz


 * 创 建 者:冷月


 * 创建日期:2010.8.20


 * 修 改 者:


 * 修改日期:


 * 功能描述:单片机us和ms级延时,适用于12MHz的12T和1T单片机


 */


 


#include "Delay.h"


 


#define    uchar      unsigned char


#define    uint  unsigned int


 


/*


 * 函 数 名:DelayUs12T


 * 功能描述:12T单片机us级延时,7us~515us,精度2us


 * 输入参数:delayUsVal = (t-5)/2


 * 返 回 值:无


 */


void DelayUs12T(uchar delayUsVal)


{


       while (--delayUsVal);


}


 


 


/*


 * 函 数 名:DelayUs1T


 * 功能描述:1T单片机us级延时,2us~85us,精度1us


 * 输入参数:delayUsVal = 3t - 3


 * 返 回 值:无


 */


void DelayUs1T(uchar delayUsVal)


{


       while (--delayUsVal);


}


 


 


/*


 * 函 数 名:DelayMs12T


 * 功能描述:12T单片机ms级延时


 * 输入参数:delayMsVal:延时多少ms,1ms~65535ms


 * 返 回 值:无


 */


void DelayMs12T(uint delayMsVal)

{

       uchar i, j;


 


       while (delayMsVal--)


              for (i = 0; i<3; i++)


                     for (j = 0; j<106; j++);


}


 


 


/*


 * 函 数 名:DelayMs1T


 * 功能描述:1T单片机ms级延时


 * 输入参数:delayMsVal:延时多少ms,1ms~65535ms


 * 返 回 值:无


 */


void DelayMs1T(uint delayMsVal)


{


       uchar i, j;


 


       while (delayMsVal--)


              for (i = 0; i<10; i++)


                     for (j = 0; j<169; j++);


}


 


Delay.h


/*


 * 模 块 名:Delay.h


 * 芯    片:STC12C5A60S2


 * 晶    振:12MHz


 * 创 建 者:冷月


 * 创建日期:2010.8.20


 * 修 改 者:


 * 修改日期:


 * 功能描述:12T单片机和1T单片机的us级和ms级延时函数(12T单片机未测试),适用于晶振12MHz


 */


 


#ifndef    _DELAY_H_


#define    _DELAY_H_


 


#define    uchar      unsigned char


#define    uint  unsigned int


 


 


/*


 * 函 数 名:DelayUs12T


 * 调    用:DelayUs12T(1);


 *                  延时7us


 *                  DelayUs12T(255);


 *                  延时515us


 * 功能描述:12T单片机us级延时,delayUsVal = (t-5)/2


 *                  延时时间t = 2delayUsVal+5,7us~515us,精度2us


 */


void DelayUs12T(uchar delayUsVal);


 


 


/*


 * 函 数 名:DelayUs1T


 * 调    用:DelayUs1T(2);


 *                  延时1us


 *                  DelayUs1T(254);


 *                  延时85us


 * 功能描述:1T单片机us级延时,delayUsVal = 3t - 3 > 1


 *                  延时时间t = (delayUsVal+3)/3,2us~85us,精度1us


 */


void DelayUs1T(uchar delayUsVal);


 


 


/*


 * 函 数 名:DelayMs12T


 * 调    用:DelayMs12T(100);


 *                  延时100ms


 * 功能描述:12T单片机ms级延时,可延时1ms~65535ms


 */


void DelayMs12T(uint delayMsVal);


 


 


/*


 * 函 数 名:DelayMs1T


 * 调    用:DelayMs1T(100);


 *                  延时100ms


 * 功能描述:12T单片机ms级延时,可延时1ms~65535ms


 */


void DelayMs1T(uint delayMsVal);


 


 


#endif

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条