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

📄 driver430.c

📁 让模拟示波器显示任意字符和图片 采用MSP430系列单片机开发
💻 C
字号:
/******************************************************************************
*                              files name DRIVER430.c
*说明:msp430单片机内部模块驱动c文件
******************************************************************************/
#include <msp430x16x.h>


/*****************************************************************************
*                                 系统时钟初始化模块
******************************************************************************/

/***********************************************************************
** 函数名称: 	XT2_ON
** 功能描述: 	外部时钟XT2振荡,并赋给MCLK
** 输 入: 	unsigned char DIVM      MCLK  主时钟分频
**              unsigned char DIVA      ACLK  辅助时钟分频
**              unsigned char DIVS     SMCLK  外设主时钟分频
** 输 出:      无
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
void XT2_ON(unsigned char DIVM,unsigned char DIVA,unsigned char DIVS)
{
   unsigned char i;
   BCSCTL1 &= ~XT2OFF;            //XT2振荡器开启
 do
  {
    IFG1 &= ~OFIFG;
    for (i = 0X20;i > 0;i--);
  }
  while((IFG1 & OFIFG) == OFIFG);//waiting for the Oscillator is notfault
  //BCSCTL1 |= XTS;
  BCSCTL1 |= DIVA << 4;
  BCSCTL2 |= SELM_2;            //MCLK 选择XT2
  BCSCTL2 |= DIVM << 4;
  BCSCTL2 |= DIVS << 1;
  BCSCTL2 |= SELS;              //SMCLK 选择XT2
}


/***********************************************************************
** 函数名称: 	DCO_ON
** 功能描述: 	内部RC振荡,并赋给MCLK
** 输 入: 	unsigned char RSELX     RC RSEL选择
**              unsigned char DCOX      DCO    输出选择
**              unsigned char DIVM      MCLK  主时钟分频
**              unsigned char DIVA      ACLK  辅助时钟分频
**              unsigned char DIVS     SMCLK  外设主时钟分频
** 输 出:      无
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
void DCO_ON(unsigned char RSELX,unsigned char DCOX,unsigned char DIVM,
            unsigned char DIVA,unsigned char DIVS)
{
  unsigned char i;
  BCSCTL1 |= XT2OFF;     //XT2振荡器关闭
  BCSCTL1 |= RSELX;      //选择DCO 频率
  DCOCTL |= DCOX << 5;
   do
  {
    IFG1 &= ~OFIFG;
    for (i = 0x20;i > 0;i--);
  }
  while((IFG1 & OFIFG) == OFIFG);
  BCSCTL1 |= DIVA << 4;
  BCSCTL2 |= SELM_0;            //MCLK 选择DCO
  BCSCTL2 |= DIVM << 4;
  BCSCTL2 |= DIVS << 1;
  BCSCTL2 &= ~SELS;              //SMCLK 选择DCO
}


/***********************************************************************
*                             USART串口通信模块
***********************************************************************/

/***********************************************************************
** 函数名称: 	USART_Init
** 功能描述: 	USART 模块初始化
** 输 入: 	无
** 输 出:      无
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
void USART_Init(void)
{
  P3SEL |= 0xC0;
  P3DIR |= 0x40;
  UTCTL1 |= SSEL1;
  UCTL1 = CHAR;
  UBR01 = 0x41;
  UBR11 = 0x03;
  UMCTL1 = 0x00;
  ME2 |= UTXE1 + URXE1;
  UCTL1 &= ~SWRST;  
  IE2 |= URXIE1;
}



/***********************************************************************
*                             AD/DA模块
***********************************************************************/

/***********************************************************************
** 函数名称: 	AD12_Init
** 功能描述: 	AD采样模块初始化
** 输 入: 	无
** 输 出:      无
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
void AD12_Init(void)
{
  unsigned int i;
  P6SEL |= BIT5;                                    // enable channel 5
  ADC12CTL0 = ADC12ON + SHT0_2 + REFON + REF2_5V;   // Turn on and set up ADC12
  ADC12CTL1 = SHP;                                                     // Use sampling timer
  ADC12MCTL0 = SREF_1+INCH_5;                       // Vr+=Vref+
    for ( i=0; i<0x3600; i++)                       // Delay for reference start-up
  {
  }
  ADC12CTL0 |= ENC;                                 // Enable conversions 
}

/***********************************************************************
** 函数名称: 	DA_Init
** 功能描述: 	DA模块初始化
** 输 入: 	无
** 输 出:      无
** 全局变量:	无.
** 调用模块: 	无
***********************************************************************/
void DA_Init(void)
{
  ADC12CTL0 = REFON + REF2_5V;
  DAC12_0CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
  DAC12_1CTL = DAC12IR + DAC12AMP_7 + DAC12ENC;
  DAC12_0DAT = 0x0000;
  DAC12_1DAT = 0x0000;
}


/***********************************************************************
** 函数名称: 	AD_one
** 功能描述: 	AD采样一次
** 输 入: 	无
** 输 出:      unsigned int  AD采样结果
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
unsigned int AD_one(void)
{
  ADC12CTL0 |= ADC12SC; 
  while((ADC12IFG&BIT0)==0);
  return(ADC12MEM0);
}


/**********************************************************************
*                             TIMERA模块
***********************************************************************/


/***********************************************************************
** 函数名称: 	TimerA_Init
** 功能描述: 	TimerA初始化
** 输 入: 	unsigned char mode    TimerA 工作模式
** 输 出:      无
** 全局变量:	无
** 调用模块: 	无
***********************************************************************/
void TimerA_Init(unsigned char mode)
{
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -