MSP430G2553 定时器中断实例

2018-07-11 21:01:06编辑:什么鱼 关键字:MSP430G2553  定时器  中断

代码


#include "MSP430G2553.h"


void led_init();

void timer0_init();


void main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;


  //--配置时钟-----

  BCSCTL1=CALBC1_1MHZ;

  DCOCTL=CALDCO_1MHZ;


  //--LED初始化----

  led_init();     


  //--定时器0初始化----

  timer0_init();


  //---开中断------

  _EINT();      //开中断


  LPM3;



}


/*

 *    定时器0中断函数

 */

#pragma vector=TIMER0_A0_VECTOR

__interrupt void Timer0_A0(void)    //TACCR0中断

  P1OUT^=(1<<6);    //LED反转

}


#pragma vector=TIMER0_A1_VECTOR

__interrupt void Timer0_A1(void)    //TACCR1中断,TACCR2中断和TA0溢出中断共用一个中断向量

  switch(TAIV)

  {

  case 2:                           //TACCR1中断

    P1OUT^=(1<<6);    //LED反转

    break;

  case 4:                           //TACCR2中断

    P1OUT^=(1<<6);    //LED反转

    break;

  case 10:                          //TAIFG 溢出中断

    P1OUT^=(1<<6);    //LED反转

    break;

  default:

    break;

  }


}


// LED 初始化

void led_init()

{

  P1DIR|=(1<<6);  

}


// 定时器初始化

void timer0_init()   

{

  /*

   *设置TIMER_A的时钟

   *TASSEL_0: TACLK,使用外部引脚信号作为输入

   *TASSEL_1: ACLK,辅助时钟

   *TASSEL_2: SMCLK,子系统主时钟

   *TASSEL_3: INCLK,外部输入时钟 

  */

  TACTL |= TASSEL_1;    


  /*

   *时钟源分频

   *ID_0: 不分频

   *ID_1: 2分频

   *ID_2: 4分频

   *ID_3: 8分频

   */

  TACTL |= ID_0;    


  /*

   *模式选择

   *MC_0: 停止模式,用于定时器暂停

   *MC_1: 增计数模式,计数器计数到CCR0,再清零计数器

   *MC_2: 连续计数模式,计数器增计数到0XFFFF(65535),再清零计数器

   *MC_3: 增减计数模式,增计数到CCR0,再减计数到0

   */

  TACTL |= MC_1;  //增计数模式


  //----计数器清零-----

  TACTL |= TACLR; 


  //----设置TACCRx的值-----

  //TACCR0=32768-1;     //时钟是32.768K,那么值设为32678-1 

  TACCR0=30000;

  TACCR1=10000;         //TACCR1和TACCR2要小于TACCR0,否则不会产生中断 

  TACCR2=20000;


  //----中断允许----

  TACCTL0 |= CCIE;      //TACCR0中断

  TACCTL1 |= CCIE;      //TACCR1中断

  TACCTL2 |= CCIE;      //TACCR2中断

  TACTL |= TAIE;        //TA0溢出中断


}


注意事项


  需要注意的是在增计数模式时CCR1和CCR2的值应该小于CCR0,否则CCR1和CCR2不会产生中断。 并且每次CCR1和CCR2中断后要把它们重新赋值这样才能保证CCR1和CCR2的中断间隔时间不变。 

  类似语句如下: 

  CCR1 += 100; 

  if ( CCR1 >= 32768 ) 

    CCR1 -= 32768;


关键字:MSP430G2553  定时器  中断

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news071140256.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机MSP430 - 定时器Timer_A
下一篇:MSP430G2553 WDT的定时器模式例子

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430G2553电子时钟实验

用msp430g2553控制1602液晶显示时间,并可以通过按键设置时间,我做了正计时和倒计时两种模式/*********************************************************************msp430g2553与1602引脚连接情况* PIN1 --> 地* PIN2 --> VCC(一定要接+5V)* PIN3 -->仿真时悬空,实际电路 2K电阻-->地 (电阻可以是500-2k的,改变电阻可以改变字符显示的亮度,电阻接不好会导致什么都不显示)* PIN4 --> RS --> P1.6* PIN5 --> R/W -->
发表于 2018-07-14 20:42:53

MSP430G2553 1602显示字符

代码:# include "msp430G2553.h"# define uchar unsigned char # define uint unsigned int # define LCD1602_RS_H  P2OUT|=BIT0# define LCD1602_RS_L  P2OUT&=~BIT0# define LCD1602_RW_H  P2OUT|=BIT1# define LCD1602_RW_L  P2OUT&=~BIT1# define LCD1602_EN_H  P2OUT|=BIT2# define LCD1602_EN_L
发表于 2018-07-14 20:40:26

MSP430G2553串口通讯 发送接收

数据发送代码:void UartPutchar(unsigned char c){while(!(IFG2 & UCA0TXIFG));  //待发送为空UCA0TXBUF=c;IFG2 &=~UCA0RXIFG;}只需要将那个buf变量的值改变即可接收数据#pragma vector=USCIAB0RX_VECTOR__interrupt void USCI0RX_ISR(void){while (!(IFG2&UCA0TXIFG));                // 等待发送完成//UCA0TXBUF
发表于 2018-07-14 20:33:37

MSP430 - G2553之串口操作

#include <msp430.h> void delay1s(void) {  int t = 1000;  while (t--)    __delay_cycles(1000);    } #define UART_TXD 0x02                                  // TXD on P1.1 (Timer0_A.OUT0
发表于 2018-07-14 20:26:54

MSP430G2553 输出ACLK和SMCLK

#include "io430.h"int main( void ){  int i;  // Stop watchdog timer to prevent time out reset  WDTCTL = WDTPW + WDTHOLD;  P1DIR |= P0 + P4; //设置P1.0 1.4为输出  P1SEL |= P0 + P4; //设置P1.0输出ACLK,P1.4输出SMCLK  while(1);  return 0;}
发表于 2018-07-14 20:23:28

MSP430G2553 串口通信

代码功能:TI官方例程 :PC机向单片机发送字符 然后单片机回发到PC机 就是这么一个简单的代码 我居然。。。。。。。。。。。。。。。。。。。。。。。。。。。。下面逐一的解释一下每一条语句的功能 附上代码://*************************************************************************//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK////   Description: Echo a received character, RX ISR used.
发表于 2018-07-14 20:19:35

小广播

何立民专栏

单片机及嵌入式宝典

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

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