/*************************************************** 程序功能:控制8个LED闪烁,用于测试下载功能是否正常 --------------------------------------------------- 测试说明:观察LED闪烁 孙浩,2010.7.20 ***************************************************/ #include <msp430x14x.h> /****************主函数****************/ void main(void) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; //与AVR不同,默认看门狗是打开的,所以要先关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换,这个是对应开发板上的电平转换芯片,与实际功能无关 CCTL0 = CCIE; //使能CCR0中断 CCR0 = 2047; //设定周期0.5S 计算:32768/8/2=2048;使用的是手表晶振 TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 //在msp430x14x.h已经对相应的寄存器和标志位都做了定义,只需要进行选择即可具体查看头文件。 //TASSEL_1表示时钟源选择ACLK,ID_3表示八分频,MC_1表示增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff; _EINT(); //使能全局中断 LPM3; //设置工作模式,使CPU进入LPM3模式,此模式下CPU MCLK SMCLK被禁止 ACLK活动 } /******************************************* 函数名称:Timer_A 功 能:定时器A的中断服务函数 参 数:无 返回值 :无 ********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void) { P2OUT ^= 0xff; //P2口输出取反 }