📄 delay.c
字号:
/******************************************************************************
* FILE NAME delay.C
*delay.c主要函数:
*MS级延时
*void Delay_Ms(unsigned long nValue)
*
*US级延时
*void Delay_Us(unsigned long nValue)
*
*S级延时 利用WDT
*
*****************************************************************************/
/***********************************************************************
** 函数名称: Delay_Ms
** 功能描述: 主时钟8M晶振 MS级软件延时(不精确)
** 输 入: 延时参数,值越大时延时越久
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
#include <msp430x16x.h>
#include "delay.h"
void Delay_Ms(unsigned long nValue)
{
while(nValue--)
{
unsigned int nCount = 1325;
while(nCount--);
}
}
/***********************************************************************
** 函数名称: Delay_Us
** 功能描述: 主时钟8M晶振 US级软件延时(不精确)
** 输 入: 延时参数,值越大时延时越久
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void Delay_Us(unsigned long nValue)
{
int nCount;
int i;
int j;
nCount=3;
for(i=nValue;i>0;i--)
for(j=nCount;j>0;j--);
}
/***********************************************************************
** 函数名称: Delay_S
** 功能描述: 主时钟8M晶振 ACLK 32。768 S级软件延时(不精确)
** 输 入: 延时参数,值越大时延时越久
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
void Delay_S(unsigned char k)
{
unsigned char i;
unsigned int j;
for(i=0;i<=k;i++)
{
for(j = 0;j < 50100;j++)
{
WDTCTL = WDT_ADLY_1000;
while(BIT0&IFG1);
IFG1&=~0X01;
}
for(j = 0;j < 50100;j++)
{
WDTCTL = WDT_ADLY_1000;
while(BIT0&IFG1);
IFG1&=~0X01;
}
for(j = 0;j < 50100;j++)
{
WDTCTL = WDT_ADLY_1000;
while(BIT0&IFG1);
IFG1&=~0X01;
}
for(j = 0;j < 50100;j++)
{
WDTCTL = WDT_ADLY_1000;
while(BIT0&IFG1);
IFG1&=~0X01;
}
}
WDTCTL=WDTPW+WDTHOLD;//stop wdt
}
void DELAY(unsigned int n)
{
unsigned int i;
for(i=0;i<=n;i++);//N=1,延时3.5US
}//延时时间算法T=n*12*机器周期(最长延时时间为(786420*机器周期)微秒
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -