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

📄 double_channel.c

📁 MSP430f169的内部DAC12双通道数模转换的模块化程序!
💻 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 + -