dac12.c

来自「在msp430集成开发环境的 DA转换程序」· C语言 代码 · 共 65 行

C
65
字号
/****************************************************************************
DAC12转换模块程序。
MCLK:DCO   ACLK:32.768kHz

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

/****************************************************************************
初始化DAC12
****************************************************************************/
void InitDac12()   {
	ADC12CTL0 = REF2_5V + REFON; 	//打开内部参考电压源,参考电压为2.5V
	//设置DAC12通道0
	DAC12_0CTL=DAC12AMP_5 + DAC12ENC+DAC12LSEL_1 +DAC12IE;
	//满量程为参考电压,中速度/电流输出,12位分辨率,Vref+为参考电压,
	DAC12_0CTL |= DAC12CALON;	//自动校准DA输出
	
	
	//设置DAC12通道1
	DAC12_1CTL= DAC12IR+ DAC12AMP_5 + DAC12ENC+DAC12LSEL_1 ;	
	//满量程为参考电压的,中速度/电流输出,12位分辨率,Vref+为参考电压,
	DAC12_1CTL |= DAC12CALON;	//自动校准DA输出
	//等待校准结束
	while(DAC12_0CTL & DAC12CALON == DAC12CALON);
	while(DAC12_1CTL & DAC12CALON == DAC12CALON);
}

/*****************************************************************************
打开或关闭DAC12
doit: 0:关闭   100:运行
which:打开或关闭。 0:DAC0		1:DAC1
*****************************************************************************/
void GoDac12(unsigned char doit,unsigned char which)  {
	if(doit==0) {
		//关闭DAC12
		if(which==0)
			DAC12_0CTL &= ~DAC12ENC;
		else
			DAC12_1CTL &= ~DAC12ENC;
	}
	else if(doit==100)  {
		//打开DAC12
		if(which==0)
			DAC12_0CTL |= DAC12ENC;
		else
			DAC12_1CTL |= DAC12ENC;
	}
}

/*****************************************************************************
写输出值
dat:要输出的值,准备写入DA数据寄存器
which:写入哪个通道。 0:DAC0		1:DAC1
*****************************************************************************/
void  Dac12Write(unsigned int dat,unsigned char which)  {
	if(which==0)
		DAC12_0DAT = dat;
	else 
		DAC12_1DAT = dat;
}



⌨️ 快捷键说明

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