原创 MSP430 ADC12模块寄存器设置解读

2008-8-28 10:43 7940 5 7 分类: MCU/ 嵌入式

付出辛苦总会有收获!


付出了两天的大好时光,终于把MSP430单片机的ADC模块摸清楚,现在把我小小的收获和大家共享下。


先贴个图片上来


这张图片在我学习过程中帮了不少忙,程序看不懂了,可以来看看这些,或许会有些收获,本人是学集成电路设计的,觉得很有帮助。371f6a94-4dde-4057-9cf1-dad5ec43b177.JPG


下面贴些自己的测试程序,别小看这几行程序啊,可是我测试N次的出来的



#include "msp430x14x.h"


void InitADC12();


unsigned char wait;
int main( void )
{
  // Stop watchdog timer to prevent time out reset



  WDTCTL = WDTPW + WDTHOLD;
  InitADC12();



  return 0;
}


void InitADC12()
{
    //_DINT();


    ADC12CTL0 &= ~ENC;  //只有在ENC复位的情况下才能对ADC12CTL0、1进行设置!!!这点很重要哦!!!强调一下,我就是在这上面吃了亏。


    ADC12CTL0 = MSC + REFON + REF2_5V + SHT0_15 + SHT1_15;
    /*MSC:多次采样转换位,只对序列采样或者多次多次转换有效。
        0:采样定时器需要SHI信号的上升沿触发
        1:首次需要采样定时器SHI信号触发,之后的转换在上次转换之后随即开始。*/


    ADC12CTL1 |= SHP + CONSEQ_0;
    /*SHP: 1:采样信号源自采样定时器 0:采样信号源自采样输入信号
    CONSEQ:  0: 单通道单次转换 1:序列通道单词转换 2:单通道多次转换 3:序列通道多次转换
    CSTARTADD_x(0~15):转换起始位置 */


    ADC12MCTL0 = EOS +  SREF_0 +  INCH_7;
    /* EOS:序列结束位
    SREF: 参考电压选择
    INCH:模拟输入通道选择 */


    ADC12IE |= 0x0001;//开相应模拟通道中断,转换完毕后引发中断


    _EINT();


    //ADC12CTL0 |= ADC12ON + ENC;  //修改!!!//  这样写是不对的
    ADC12CTL0 |= ADC12ON;
    ADC12CTL0 |= ENC;



    wait = 0;  //此处可定义变量,指示转换是否完成


    ADC12CTL0 |= ENC+ADC12SC;  //转换开始  若希望在其他时间开始转换 可将次句放在别处逼比必


    while(wait==0)
      ;
}


#pragma vector="ADC"_VECTOR
__interrupt void ADC()
{int  result[7];
        wait="1";


 


        result[0] = ADC12MEM0;



        /*unsigned char q0;
 int *pmem=ADC12MEM;


     //转换结束的标志位置位
 for(q0=0;q0<16;q0++)
 {
  AdMem[q0]= *pmem;
  pmem++;
 }*/
}


下面再来简要的介绍一下这个模块不易理解的地方


1、MSP430可以使用内部、外部的参考电压,内部1.5或2.5,外部0~3.3,可以通过寄存器设置,采样电压的输入范围最大为0~3.3即AVss~AVcc,不能检测负电压,如果需要检测负电压,可以使用运放,电压偏置成为正电压然后检测


2、使用外部AVss~AVcc作为参考电压不够稳定,但是精度高,使用内部电压较稳定。


3、程序中一定要打开全局中断_EINT();


以上是本人觉得需要注意的地方,当然不够全面,还需要大家的补!还是希望大家能够找本书看看,学就要学精嘛


顺便把程序和图片打包上传rar

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2013-4-27 23:24

写的挺好的,挺有参考价值。

用户1403374 2009-8-10 14:26

写的很不错
相关推荐阅读
用户1632959 2008-11-08 21:35
HEX格式解析
1、什么是HEX格式HEX文件是记录文本行的ASIC II 文本文件2、格式举例    :020000021200EA:无意义02 数据字节数目0000 地址02 类型1200 数据EA 校验类型:0...
用户1632959 2008-11-08 21:16
MSP430串口篇
串口的调试其实很容易,朋友们只需要找个例程,对照程序翻翻参考书(手册)的寄存器设置就可以使用了,上传个串口例程:TI官方的https://static.assets-stash.eet-china.c...
用户1632959 2008-08-22 22:10
MSP430+DS1302 调试通过!
  刚刚完成了MSP430+DS1302,东西不大,思路也很清楚,但是着实花费了一番功夫! 总结一下吧,一个不错的习惯,希望能给大家帮助1、老问题了,430晶振别忘了初始化2、仔细看看器件的时序图,看...
用户1632959 2008-07-22 17:14
MSP430+12864LCD 源程序(YLF12864-HA)
源程序花了两三天的时间终于把12864LCD搞明白了,呵呵,还有一点收获的喜悦。    前些天搞到一块12864液晶,但是没有资料,让我费了好大一番力气,先是从网上copy网友的程序,然后参照其他的引...
用户1632959 2008-07-19 19:02
欢迎大家来我的博客
    刚刚开通了博客,其实来EDN CHINA已经很长时间了,从这里学到了很多东西^_^ ,学习单片机的时候都是来这里查找资料的,非常的喜欢这里充满技术的空间。    现在在学USB技术,MSP43...
我要评论
2
5
关闭 站长推荐上一条 /3 下一条