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

📄 定时器a之连续计数模式多端口翻转输出2.c

📁 包含了msp430单片机上的ADC、定时器A、定时器B、基础时钟、看门狗的初始化及中断程序。基本示例程序
💻 C
字号:
/**********************************************************/
//MSP430 Advanced Developping Components - [BaseComponents_24.C]
////Timer_A, Toggle P1.0-3, Cont. Mode ISR, HF XTAL ACLK
////->>> http://www.dutzm.cn
////->>> tel :(0)13130044096
/**********************************************************/
//MSP430高级实验开发组件 - 定时器A之连续计数模式多端口翻转输出
//时钟设置:
////ACLK = MCLK = TACLK = LFXT1 = HF XTAL
//当前演示程序功能描述:
////使用TimerA的CCRx和溢出产生四个独立的时间间隔
////CCR0,CCR1和CCR2利用端口的输出方式分别控制P11,P12和P13的输出
////在对应的中断服务程序设置CCRx对应的时间间隔
////在输出模式下,端口在TAR到达CCRx时翻转,是受硬件控制的
////  P1.1 = CCR0 = 4MHz/(2*200) = 10kHz
////  P1.2 = CCR1 = 4MHz/(2*1000) = 2kHz
////  P1.3 = CCR2 = 4MHz/(2*10000) = 200Hz
////  P1.0 = overflow = 4MHz/(2*65536) = 30.5Hz
/*********************************************************/

#include <msp430x14x.h>

void main(void) {
	unsigned int i;
	WDTCTL = WDTPW + WDTHOLD;		//停止看门狗
	BCSCTL1 |= XTS;				//ACLK = LFXT1 = HF XTAL
	
	do {
		IFG1 &= ~OFIFG;			//清除ASCFault标志位
		for (i=0xFF;i>0;i--);		//延时
	}while((IFG1&OFIFG));			//判断OSCFault标志位

	BCSCTL2 |= SELM_3;			//MCLK = LFXT1
	
	P1SEL |= (BIT1 + BIT2 + BIT3);		//设置P11,P12,P13端口第二功能
	P1DIR |= (BIT0 + BIT1 + BIT2 + BIT3);	//端口的输出方向
	
	CCTL0 = OUTMOD_4 + CCIE;		//CCR0翻转模式,中断
	CCTL1 = OUTMOD_4 + CCIE;		//CCR1翻转模式,中断
	CCTL2 = OUTMOD_4 + CCIE;		//CCR2翻转模式,中断
	CCR0 = 200;
	CCR1 = 1000;
	CCR2 = 10000;
	TACTL = TASSEL_1 + MC_2 + TAIE;		//ACLK,连续计数模式,允许中断
	
	_BIS_SR(LPM0_bits + GIE);		//LPM0低功耗模式,允许系统中断
}

//Timer_A0中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0 (void) {
	CCR0 += 200;				//CCR0 Offset
}

//Timer_A3中断服务程序
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void) {
	switch(TAIV) {
		case 2:
			CCR1 += 1000;		//CCR1 Offset
			break;
		case 4:
			CCR2 += 10000;		//CCR1 Offset
			break;
		case 10:
			P1OUT ^= BIT0;		//Timer_A3溢出,软件翻转端口
			break;
	}
}

⌨️ 快捷键说明

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