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

📄 dactestmain.c

📁 430 单片机控制产生正玄波输出 周期频率可以调节
💻 C
字号:
/****************************************************************************
DAC12转换模块。
MCLK:DCO   ACLK:32.768kHz

*****************************************************************************/
#include <msp430x16x.h>
#include "dac12.h"
#include "df_timera.h"
#include"math.h"

void InitSys();
void write(unsigned int adrs)  ;


int main()  {
	WDTCTL = WDTPW + WDTHOLD;   	//关闭看门狗
	InitSys();
	TimerAInit();									//初始化定时器A
	InitDac12();									//初始化DAC12
        _EINT();	//打开全局中断控制,若不需要打开,可以屏蔽本句
 
	
        write(0xf000);

	//GoDac12(100,0);                        //打开DAC12通道0
	GoDac12(100,1);                        //打开DAC12通道1
	GotimeDfA(100,60);                            //打开定时器A
	
      while(1)  {
      LPM0;
      _NOP();
}
}

/*****************************************************************************
系统初始化
******************************************************************************/
void InitSys()  {
	 unsigned int iq0;

	//使用XT2振荡器
   BCSCTL1&=~XT2OFF;     			//打开XT2振荡器
   do  {
 		IFG1 &= ~OFIFG;			//清除振荡器失效标志
 		for (iq0 = 0xFF; iq0 > 0; iq0--);	//延时,等待XT2起振
 	}
 	while ((IFG1 & OFIFG) != 0);			//判断XT2是否起振

 	BCSCTL2 =SELM_2+SELS;				//选择MCLK、SMCLK为XT2
}


/****************************************************************************************
向FLASH写入正弦列表
开头地址为 adrs ,写入一个周期共628个值
********************************************************************************************/
void write(unsigned int adrs)
{
    signed int* adr;
     int i;
     float k;
    FCTL2=FWKEY+FSSEL0+FN0; 
    adr=(signed int *)adrs;
    FCTL1=FWKEY+ERASE;
    FCTL3=FWKEY;
    *adr=0;
    FCTL1=FWKEY+WRT;
    k=0;
    for(i=0;i<629;i++)
    {
        *adr++=(signed int)((sin(k))*2048);
        k=k+0.01;  
    }
}
 
 
  
  
  
  
  
  
  
  
  
  
  
  
                             

⌨️ 快捷键说明

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