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
文章评论(0条评论)
登录后参与讨论