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

📄 msp430 adc12多通道序列转换.c

📁 MSP430系列单片机适用小程序
💻 C
字号:
//************************************************************************************
//*  南京航空航天大学 魏小龙 编写,欢迎大家讨论,交流
//*   MSP430F149 ADC12的测试程序---多通道,重复转换  
//
//    adc12ctl0  15 14 13 12 , 11 10 9  8 , 7   , 6  , 5  ,  4   ,    3 ,   2  ,  1    ,   0
//                   SHT1    ,    SHT0    ,MSC  ,25V ,REF ,ADC12 ,ADC12 ,ADC12 ,ENC    ,ADC12
//                                   多次采样转换位   -ON   ON    OVIE   TOVIE           SC
//         采样保持定时器1 , 采样保持定时器0  2.5/1.5         溢出中断允许    转换允许  采样/转 
//                                                                转换时间溢出中断允许   换位
//
//    ADC12CTL1  15  14 13 12 ,11 10 ,9   , 8   , 7  6  5   ,   4    3  , 2  1   ,   0
//                CSSTARTADD  , SHS  ,SHP ,ISSH , ADC12DIV  , ADC12SSEL , CONSEQ , ADC12BUSY
//              定义转换存储寄存器               选择分频因子             转换模式    忙
//                        采样输入信号源                   转换内核的时钟源
//
//    ADC12MCTLX 7   , 6    5    4  ,  3   2   1    0
//              EOS  ,    SREF      ,     INCH
//
//
//*   这是一个简单的AD12的测试程序,用到了中断
//*   程序被初始化成多通道、重复转换,转换结果在中断中被放在变量Result[0]和Result[1]中
//*                                         或是放在其它的缓冲区中
//*************************************************************************************
#include <msp430x14x.h>     

#define ADCMEM ((int*) 0x0140)  // ADC12MEMx  定义
void Init(void);


unsigned int Result[2];
void main(void)
{ 
    Init();
    ADC12CTL0 |= 0x01;     // 开始转换
    LPM0;                  //进入低功耗状态,等待中断
    _NOP();    	

}


void Init(void)
{    
     WDTCTL = WDTPW + WDTHOLD;        // Stop watchdog timer

/* ADC12 Settings: */     
     P6SEL = 0xFF;         // 所有P6口线均为ADC模块使用

     ADC12CTL0 &=~ 0x02;   // 在进行设置时首先复位ADC的转换使能

     ADC12MCTL0  = 0x00;    // Ref = AVss, AVcc; 输入通道 = A0
     ADC12MCTL1  = 0x8a;    // Ref = AVss, AVcc; 输入通道 = A10



     ADC12CTL1 = 0x0206 ;   // 第一个转换结果被放在ADC12MEM0
                            // 第二个转换结果被放在ADC12MEM1
                            // 采样脉冲由采样定时器产生
                            // 时钟源:内部振荡器
                            // 时钟分频: 1
                            // 转换模式: 多通道、重复转换

     ADC12CTL0 = SHT0_8+ MSC+ADC12ON ;
                           
     ADC12IE = 0x002;                   //使能转换中断
     ADC12CTL0 |= 0x02;                 
     _EINT();                           //使能全局中断
}

interrupt [ADC_VECTOR] void ADC12(void)   // ADC 中断处理程序
{   
    unsigned int  i;
    for(i = 0 ; i < 2 ; i++ )
    {
        Result[i] = ADCMEM[i] ;
    }
}   
 

⌨️ 快捷键说明

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