⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delay.c

📁 让模拟示波器显示任意字符和图片 采用MSP430系列单片机开发
💻 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 + -