找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2214|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

stc 單片機(jī) 精確 延時(shí)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:266366 發(fā)表于 2017-12-25 10:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

Delay.c

/***********************************************************************************************************

* 文 件 名:Delay.c

* 芯 片:STC12C5A60S2

* 晶 振:12MHz

* 創(chuàng) 建 者:冷月

* 創(chuàng)建日期:2010.8.20

* 修 改 者:

* 修改日期:

* 功能描述:?jiǎn)纹瑱C(jī)us和ms級(jí)延時(shí),適用于12MHz的12T和1T單片機(jī)

***********************************************************************************************************/

#include "Delay.h"

#define uchar unsigned char

#define uint unsigned int

/***************************************************************************************************

* 函 數(shù) 名:DelayUs12T

* 功能描述:12T單片機(jī)us級(jí)延時(shí),7us~515us,精度2us

* 輸入?yún)?shù):delayUsVal = (t-5)/2

* 返 回 值:無(wú)

******************************************************************************************************/

void DelayUs12T(uchar delayUsVal)

{

while (--delayUsVal);

}

/******************************************************************************************

* 函 數(shù) 名:DelayUs1T

* 功能描述:1T單片機(jī)us級(jí)延時(shí),2us~85us,精度1us

* 輸入?yún)?shù):delayUsVal = 3t - 3

* 返 回 值:無(wú)
****************************************************************************************/

void DelayUs1T(uchar delayUsVal)

{

while (--delayUsVal);

}


/*******************************************************************

* 函 數(shù) 名:DelayMs12T

* 功能描述:12T單片機(jī)ms級(jí)延時(shí)

* 輸入?yún)?shù):delayMsVal:延時(shí)多少ms,1ms~65535ms

* 返 回 值:無(wú)

***************************************************************/

void DelayMs12T(uint delayMsVal)

{ uchar i, j;

while (delayMsVal--)
for (i = 0; i<3; i++)
for (j = 0; j<106; j++);
}


/********************************************************************

* 函 數(shù) 名:DelayMs1T

* 功能描述:1T單片機(jī)ms級(jí)延時(shí)

* 輸入?yún)?shù):delayMsVal:延時(shí)多少ms,1ms~65535ms

* 返 回 值:無(wú)

*********************************************************************/

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

* 創(chuàng) 建 者:冷月

* 創(chuàng)建日期:2010.8.20

* 修 改 者:

* 修改日期:

* 功能描述:12T單片機(jī)和1T單片機(jī)的us級(jí)和ms級(jí)延時(shí)函數(shù)(12T單片機(jī)未測(cè)試),

適用于晶振12MHz

***************************************************************/

#ifndef _DELAY_H_

#define _DELAY_H_

#define uchar unsigned char

#define uint unsigned int

/*********************************************************

* 函 數(shù) 名:DelayUs12T
* 調(diào) 用:DelayUs12T(1--------255);
* 延時(shí)7us------515us
* 延時(shí)* 功能描述:12T單片機(jī)us級(jí)延時(shí),delayUsVal = (t-5)/2
* 延時(shí)時(shí)間t = 2delayUsVal+5,7us~515us,精度2us
**************************************************************/

void DelayUs12T(uchar delayUsVal);

/**********************************************************
* 函 數(shù) 名:DelayUs1T
* 調(diào) 用:DelayUs1T(2);
* 延時(shí)1us
* DelayUs1T(254);
* 延時(shí)85us
* 功能描述:1T單片機(jī)us級(jí)延時(shí),delayUsVal = 3t - 3 > 1
* 延時(shí)時(shí)間t = (delayUsVal+3)/3,2us~85us,精度1us
****************************************************************/

void DelayUs1T(uchar delayUsVal);

/*********************************************************
* 函 數(shù) 名:DelayMs12T
* 調(diào) 用:DelayMs12T(100);
* 延時(shí)100ms
* 功能描述:12T單片機(jī)ms級(jí)延時(shí),可延時(shí)1ms~65535ms
******************************************************************/
void DelayMs12T(uint delayMsVal);


/**************************************************************
* 函 數(shù) 名:DelayMs1T
* 調(diào) 用:DelayMs1T(100);
* 延時(shí)100ms
* 功能描述:12T單片機(jī)ms級(jí)延時(shí),可延時(shí)1ms~65535ms

*-**************************************************************/
void DelayMs1T(uint delayMsVal);

#endif


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表