msp430学习笔记之定时器A

原创 2015年07月07日 22:56:56

1 相关知识

1 定时器a图解

  
 1  定时器A图解
2  定时器A的四种计数模式
 

1. 停止模式。

2. 增计数模式。(产生两个中断标志)

当计数到跟TACCR0一样的时候,就返回0,重新计数。当计数到TACCR0的同时产生一个中断标志CCIFG,而当计数器溢出返回零的同时又同时产生一个中断标志TAIFG。如图:

2 增计数模式的时序图

3.连续计数模式(产生一个中断标志)

计数器将直接计数到计数器所能计数的最大值0FFFFH之后重新返回零,再次计数。返回零的同时产生一个TAIFG中断标志。如图

3 连续技术模式的时序图

如果相应中断位允许,每当一个定时间隔到都会产生中断请求,在连续计数模式下,须将下一事件发生的时间在当前中断程序中加到CCRx中,如图4,下次发生中断的时间等于在CCR0a发生中断时刻,CCR0 = CCR0a + Δt


4 连续计数模式下中断与CCRx关系


4 增减计数模式(产生两个中断标志)

当计数器计数到跟TACCR0一样的之后,然后从TACCR0开始又减少,直到为零,然后又开始增。当计数跟TACCR0一样的时候产生一个中断标志CCIFG,当减到为零的时候又产生一个中断标志TAIFG。如图:



图 5 增减计数模式时序图

相关寄存器这里就不一一介绍了,可以翻阅数据手册


2 代码实现

//本平台 msp430f149
#include <msp430f149.h>

volatile unsigned char count = 0,flag = 0;

void P2_config(){
	P2DIR = 0x80;
	P2OUT = 0xff;

}

void select_xt2(void){
	
	unsigned char i;
	
	/*------选择系统主时钟为8MHz-------*/
    BCSCTL1 &= ~XT2OFF;                 	
	do{    
    IFG1 &= ~OFIFG;                 		//清除晶振失败标志
        for (i = 0xFF; i > 0; i--);     	//等待8MHz晶体起振
    }while ((IFG1 & OFIFG));             	
	
    BCSCTL2 |= SELM_2 + SELS  ;           	//MCLK和SMCLK选择高频晶振	

}


void main(){
	WDTCTL = WDTPW + WDTHOLD;				       // 关狗
	select_xt2();								   //8MHz晶振	
	P2_config();
	
	CCTL0 = CCIE;                                  // CCR0 中断使能
 	CCR0 = 10000;
  	TACTL = TASSEL_2 + MC_2 + ID_3;                // SMCLK = 1MHz, 连续计数模式
	 _EINT();									   // 开启全局中断
	
	while(1){
		if(count == 50){
			count = 0;
			P2OUT  ^= BIT7 ;
	        
		}
		
	}

}

// Timer A0 中断服务函数
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
  count ++;
  CCR0 += 10000;                            // 下次中断时间装入CCR0中
}


3 实验结果

       led灯间隔0.5s变化一次,说明使用定时器比较模式成功
版权声明:本文为博主原创文章,未经博主允许不得转载。

单片机MSP430 - Timer_A 定时器中断程序

一、利用定时器定时功能,实现定时器单个溢出中断,实现 P3.0 方波输出 #include "cc430x613x.h" void main() { WDTCTL = WDTPW + WDT...
  • u012313335
  • u012313335
  • 2016年11月21日 11:13
  • 3088

MSP430定时器 TIMER0_A1_VECTOR

msp430g2553有两个定时器,一个是Timer0,一个是Timer1。TIMER0_A1_VECTOR ,TIMER0_A0_VECTOR    是Timer0的中断向量, 在430中,CCR...
  • u010568345
  • u010568345
  • 2014年07月09日 15:08
  • 2003

MSP430定时器计算

  • 2012年10月02日 11:05
  • 12KB
  • 下载

浅谈msp430f5529入门(3)——定时器A/Timer_A

sv
  • u014397533
  • u014397533
  • 2014年07月16日 10:50
  • 2921

MSP430 LaunchPad定时器中断(连续模式)

#include int main( void ) {   // Stop watchdog timer to prevent time out reset   WDTCTL = W...
  • w282529350
  • w282529350
  • 2012年02月29日 08:54
  • 4257

单片机MSP430 - 定时器Timer_A

一、定时器Timer_A 介绍 Timer_A是一个具有多路捕获/比较寄存器的16位定时/计数器,主要有TAxCTL,TAxR,TAxCCTLn,TAxIV,TAxEX0 几个寄存器。其中最主要的是T...
  • u012313335
  • u012313335
  • 2016年10月17日 12:15
  • 534

Msp430定时器的介绍及其基本应用

Msp430单片机一共有5种类型的定时器。 看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和...
  • tsroad
  • tsroad
  • 2015年11月09日 16:18
  • 1747

单片机MSP430 - Timer_A 定时器中断程序

一、利用定时器定时功能,实现定时器单个溢出中断,实现 P3.0 方波输出 #include "cc430x613x.h" void main() { WDTCTL = WDTPW + WDT...
  • u012313335
  • u012313335
  • 2016年11月21日 11:13
  • 3088

MSP430 定时器输出PWM波形

硬件介绍: MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。它给开发人员提供了较多灵活的选择余地。当PWM 不需要修改占空比...
  • u011392772
  • u011392772
  • 2016年07月20日 19:25
  • 1918

MSP430--看门狗定时器

1.
  • ninoKOP
  • ninoKOP
  • 2014年07月23日 16:45
  • 1878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:msp430学习笔记之定时器A
举报原因:
原因补充:

(最多只允许输入30个字)