📄 double_channel.c
字号:
#include <io430x16x.h>
void SysIn()
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
//使用XT2振荡器
BCSCTL1 &= ~XT2OFF;
do
{
IFG1 &= ~OFIFG; //清振荡失效标志
for(i = 0xff; i > 0;i--); //延时等待起振
}while(IFG1&OFIFG );//判断XT2是否起振
BCSCTL2 |= SELM_2 + SELS;
//选择MCLK,SMCLK时钟都为XT2振荡器提供
}
/*---------------------------------------
输入: i = 1,打开DAC;i = 10,关闭DAC
m = 0,选择DAC0;m = 1,选择DAC1
-----------------------------------------*/
void Dac12Ctl(unsigned int i, unsigned int m)
{
if((i == 1)&&(m == 0))
{
DAC12_0CTL |= DAC12ENC;
}
if((i == 10)&&(m == 0))
{
DAC12_0CTL &= ~DAC12ENC;
}
if((i == 1)&&(m == 1))
{
DAC12_1CTL |= DAC12ENC;
}
if((i == 10)&&(m == 1))
{
DAC12_1CTL &= ~DAC12ENC;
}
}
/*------------------------------------------
输入:data:待转换的数据
m:选择通道 0:DAC0;1:DAC1
---------------------------------------------*/
void Dac12Write(unsigned int data,unsigned int m )
{
if(m == 0)
{
DAC12_0CTL = data;
}
if(m == 1)
{
DAC12_1CTL = data;
}
}
void main()
{
ADC12CTL0 = REF2_5V + REFON;
//打开内部参考电压,Vref=2.5
//设置DAC12通道0
DAC12_0CTL = DAC12IR + DAC12AMP_7 + DAC12RES + DAC12LSEL_0;
//满量程为参考电压,高速度/电流输出,8位分辨率,Vref+为参考电压
DAC12_0CTL |= DAC12CALON;//自动校准DA输出
//设置DAC12通道1
DAC12_1CTL = DAC12IR + DAC12AMP_7 + DAC12RES + DAC12LSEL_0;
//满量程为参考电压,高速度/电流输出,8位分辨率,Vref+为参考电压
DAC12_0CTL |= DAC12CALON;//自动校准DA输出
//等待校准结束
while(DAC12_0CTL & DAC12CALON == DAC12CALON);
while(DAC12_1CTL & DAC12CALON == DAC12CALON);//校准完毕,自动置位
Dac12Ctl(1,0);
Dac12Ctl(2,0);
Dac12Write(0xff,0);
Dac12Write(0x80,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -