?? 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 + -