MSP430 ADC12(一)

发布者:SparkCrafter最新更新时间:2022-09-06 来源: csdn关键字:MSP430  ADC12  执行效率 手机看文章 扫描二维码
随时随地手机看文章

以下代码运行ADC12模块,P6.0为输入通道,P1.0为输出。当输入电压大于0.5电源电压VCC时点亮LED。


注意:__even_in_range(ADC12IV,34) 是判断ADC12IV是否为0-34之间的偶数,如果是执行switch语句,此做法是为了提高switch语句的执行效率,用于多中断来源判断。


#include


int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  ADC12CTL0 = ADC12SHT02 + ADC12ON;         // 采样时间,打开ADC12

  ADC12CTL1 = ADC12SHP;                     // 使用采样定时器

  ADC12IE = 0x01;                           // 0通道中断使能

  ADC12CTL0 |= ADC12ENC;                    // ADC12使能

  P6SEL |= 0x01;                            // P6.0选择ADC通道

  P1DIR |= 0x01;                            // P1.0输出


  while (1)

  {

    ADC12CTL0 |= ADC12SC;                   // 开始采样转换

    

    __bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR强制退出

    __no_operation();                       // For debugger

  }

}


#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector = ADC12_VECTOR

__interrupt void ADC12_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void)

#else

#error Compiler not supported!

#endif

{

  switch(__even_in_range(ADC12IV,34))

  {

  case  0: break;                           // Vector  0:  No interrupt

  case  2: break;                           // Vector  2:  ADC overflow

  case  4: break;                           // Vector  4:  ADC timing overflow

  case  6:                                  // Vector  6:  ADC12IFG0

    if (ADC12MEM0 >= 0x7ff)                 // ADC12MEM = A0 > 0.5AVcc?

      P1OUT |= BIT0;                        // P1.0 = 1

    else

      P1OUT &= ~BIT0;                       // P1.0 = 0


    __bic_SR_register_on_exit(LPM0_bits);   // Exit active CPU

  case  8: break;                           // Vector  8:  ADC12IFG1

  case 10: break;                           // Vector 10:  ADC12IFG2

  case 12: break;                           // Vector 12:  ADC12IFG3

  case 14: break;                           // Vector 14:  ADC12IFG4

  case 16: break;                           // Vector 16:  ADC12IFG5

  case 18: break;                           // Vector 18:  ADC12IFG6

  case 20: break;                           // Vector 20:  ADC12IFG7

  case 22: break;                           // Vector 22:  ADC12IFG8

  case 24: break;                           // Vector 24:  ADC12IFG9

  case 26: break;                           // Vector 26:  ADC12IFG10

  case 28: break;                           // Vector 28:  ADC12IFG11

  case 30: break;                           // Vector 30:  ADC12IFG12

  case 32: break;                           // Vector 32:  ADC12IFG13

  case 34: break;                           // Vector 34:  ADC12IFG14

  default: break; 

  }

}


关键字:MSP430  ADC12  执行效率 引用地址:MSP430 ADC12(一)

上一篇:MSP430 ADC12(二)
下一篇:MSP430flash封装读写函数

推荐阅读最新更新时间:2024-11-17 04:30

MSP430fr6989的串口DMA发送实验例程(从0写起,亲测可玩)
本例子选择MSP430fr6989的P2.0与P2.1作为串口UCA0TXD UCA0RXD ;(代码不多,主要对寄存器的操作,急于求成都写在main.c文件,做工程不建议这样做) 主要用到这两个寄存器: DMACTL0用于选择DMA通道;比如ADC12,串口 ,IIC,SPI,此处多说一句:DMA是一种方式,而SPI,IIC,串口等属于外设,两者不是一类概念,嘿嘿嘿 DMAxCTL用于DMA详细设置;此为重点!!!DMAxCTL包括: DMADT:选择传输方式是一个单字节还是一个块transfer;本例子选简单的单字节transfer; DMADSTINCR:分解单词DMA dest increase 即数据
[单片机]
基于MSP430单片机的低功耗主动式RFID标签设计
射频识别(RFID)技术近年来在国内外得到了迅速发展。对于需要电池供电的便携式系统,功耗也越来越受到人们的重视。本文将具体阐述基于MSP430F2012和CC1100低功耗设计理念的双向主动式标签的软硬件实现方法。   低功耗设计   低功耗概述   功耗基本定义为能量消耗的速率,可分为瞬态功耗和平均功耗两类。两者意义不同,有不同的应用背景和优化策略,通常被笼统地概括为低功耗设计。实际研究中可根据不同情况区分为:   (1)瞬态功耗优化:目标是降低峰值功耗,解决电路可靠性问题。   (2)平均功耗优化:目标是降低给定时间内的能量消耗,主要针对电池供电的便携电子设备,以延长电池寿命或减轻设备重量。   功耗的物理来源   芯片电
[单片机]
基于<font color='red'>MSP430</font>单片机的低功耗主动式RFID标签设计
基于MSP430F149电机保护算法的实现
    目前,我国高压电动机的保护主要有机电式和集成电路两种,但都存在着诸多弊病,不能很好地保护电动机。其中,异步电动机的机电式保护,主要以电流增大作为判据,保护原理粗略,对断相等严重不对称故障,由于一般不出现显著的电流增大,从而使保护装置难以及时动作,造成事故扩大;集成电路式保护虽在保护原理上有所改善,但其保护特性一般无法与电动机热曲线实现较好配合,常发生拒动或误动,严重的甚至烧毁电动机。因此,研究电机保护算法具有重要的意义。 1 电动机故障分析     电动机的故障形式可分为对称和不对称两类。     对称故障包括过载、堵转和三相短路等,这类故障对电动机的损坏主要是热效应和机械应力,使绕组发热甚至损坏。其主要特征是三相仍基本对
[单片机]
基于<font color='red'>MSP430</font>F149电机保护算法的实现
MSP430FW427无磁水表设计方案详解
  1. MSP430FW42x单片机介绍   MSP430FW42x系列单片机是TI公司针对电子式流量与旋转运动检测最新开发的专用MCU芯片,它将超低功耗MCU、旋转扫描接口 (SCAN IF)和液晶显示LCD驱动模块完美地结合在一起。该器件的超低功耗结构和流量检测模块不仅延长了电池的寿命,同时还提高了仪表的精度与性能。 MSP430FW42x的典型应用包括热量仪表、热水和冷水仪表、气体仪表和工业流量计、风力计以及其他旋转检测应用。   2. 流量测量的原理   2.1 基本原理   一个由叶轮或螺旋齿轮构成的机械装置把流体流动转换为转动,这种转换能够实现对流体流量的测量。   把一个谐振回路中的电感置于叶轮的上方可以
[单片机]
<font color='red'>MSP430</font>FW427无磁水表设计方案详解
MSP430学习笔记-看门狗
WDTCTL 看门狗控制寄存器 WDTCTL 由两部分组成: 高 8 位是对 WDT 操作的控制命令。要写入操作 WDT 的控制命令,出于安全原因必须先正确写入高字节 看门狗口令。口令位 5AH,如果口令写错将导致系统复位。 读 WDTCTL 时,不需要口令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,高字 节始终位 69H。WDTCTL 除了看门狗定时器的控制位之外,还有两个用于设置 NMI 引脚功能。 WDTISx:选择看门狗定时器的计时输出 其中 T 是 WDTCNT 的输入时钟源周期。 0 T×2的15次方 1 T×2的13次方 2 T×2的9次方 3 T×2的6次方 WDTSSEL:选择
[单片机]
<font color='red'>MSP430</font>学习笔记-看门狗
msp430 launchpad 按键控制led亮灭
demo1 实现功能:按一下按键,led2变换一下亮灭状态。 #include msp430.h //这个宏仅针对8MHz #define delay_us(us) __delay_cycles(8*(us)) #define delay_ms(ms) __delay_cycles(8000*(ms)) int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_8MHZ; //设置 DCO 频率为8MHz DCOCTL = CALDCO_8MHZ; P1DIR |= BIT6;
[单片机]
MSP430低功耗模式-while循环失效
如下代码实现MSP430G2553单片机两个led交替闪烁 #include msp430.h /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P1DIR|=BIT0+BIT6; P1OUT|=BIT0; while(1) { unsigned int i; i=50000; while(i--); P1OUT^=BIT0+BIT6; } } 发现灯光显示异常两灯常亮。 为什么呢?在老师帮助下了解了是因为Msp430这款板子默认的低功耗模式导致了cpu不干预而
[单片机]
<font color='red'>MSP430</font>低功耗模式-while循环失效
MSP430FR5969内存分配的问题
cmd文件里的具体内容我就不贴了,大家自己可以看一下。cmd文件主要由两部分构成,一个是MEMORY{};另一个是SECTIONS{} 其中MEMORY{}是定义内部所有寄存器及存储器的地址,在这里大部分内容都是厂家定义好的,一般不能修改。但是咱们今天要改的就是他,当然只能改其中允许该的地方,那就是FRAM的分配问题。根据数据手册里提供的内存分配情况(如下图)我们可以得知,59x9的内存从0x0000开始,一直到0x13FFF。对应着这个图和Cmd文件,我们可以了解内部的地址分配问题,如果做过总线扩展之类的同学肯定对这个不会陌生了,如果没有见过就需要理解一下。其实也很简单,就是对应的地址要对应上就可以了。有一些是固定好的不能变,比
[单片机]
<font color='red'>MSP430</font>FR5969内存分配的问题
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved