/****************主函数****************/
void main(void) {
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
BoardConfig(0xf0); //关闭数码管和电平转换,打开流水灯
CCTL0 = CCIE; //使能CCR0中断
CCR0 = 2047; //设定周期0.5S
TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff;
_EINT(); //使能全局中断 LPM3; //CPU进入LPM3模式 }
/******************************************* 函数名称:Timer_A
功 能:定时器A的中断服务函数 参 数:无 返回值 :无
********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void)
{
P2OUT ^= 0xff; //P2口输出取反 } /*********************************************** 程序功能:实现流水灯以三种流动方式和四种流动速度 的不同组合而进行点亮\流动\------------------------------------------------
测试说明:观察流水灯流动顺序和速度的变化
************************************************/ #include
uint i = 0,j = 0,dir = 0;
uint flag = 0,speed = 0; //flag--灯光流动方式,speed--灯光流动速度
/****************主函数****************/ void main(void) {
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
6
BoardConfig(0xf0);
CCTL0 = CCIE; //使能CCR0中断
CCR0 = 50000;
TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff;
_EINT(); //使能全局中断 LPM0; //CPU进入LPM0模式 }
/******************************************* 函数名称:Timer_A
功 能:定时器A的中断服务函数,在这里通过标志 控制流水灯的流动方向和流动速度 参 数:无 返回值 :无
********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void)
{
if(flag == 0) {
P2OUT = ~(0x80>>(i++)); //灯的点亮顺序D8 -> D1 }
else if(flag == 1)
{
P2OUT = ~(0x01<<(i++)); //灯的点亮顺序D1 -> D8 }
else {
if(dir) //灯的点亮顺序 D8 -> D1,D1 -> D8,循环绕圈 {
P2OUT = ~(0x80>>(i++)); } else
{
P2OUT = ~(0x01<<(i++)); } }
if(i == 8) {
i = 0;
7
dir = ~dir; }
j++;
if(j == 40) { i = 0; j = 0; flag++;
if(flag == 4) flag = 0; switch(speed) {
case 0:
TACTL &=~ (ID0 + ID1); TACTL |= ID_3; break;
case 1:
TACTL &=~ (ID0 + ID1); TACTL |= ID_2; break; case 2:
TACTL &=~ (ID0 + ID1); TACTL |= ID_1; break; case 3:
TACTL &=~ (ID0 + ID1); TACTL |= ID_0; break; default: break;
}
if(flag != 3) speed++; if(speed == 4) speed = 0; } } /******************************************************* 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁 P2.3口输出方波的占空比为75% P2.4口输出方波的占空比为25% ------------------------------------------------------- 测试说明:观察LED的亮灭的时间长短
*******************************************************/ #include
8
{
WDTCTL = WDTPW + WDTHOLD; // 关狗
BoardConfig(0xb0); // 关闭数码管和电平转换,打开流水灯 P2DIR = 0xff; // P2端口设置为输出 P2OUT = 0xff; // 关闭其他LED
P2SEL |= BIT3 + BIT4; // P2.3和P2.4连接内部模块 CCR0 = 4096-1; // PWM周期为1S CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 3072; // CCR1 PWM duty cycle CCTL2 = OUTMOD_7; // CCR2 reset/set CCR2 = 1024; // CCR2 PWM duty cycle TACTL = TASSEL_1 + ID_3 + MC_1; // ACLK/8, up mode
_BIS_SR(LPM3_bits); // Enter LPM3 } //****************************************************************************** // MSP-FET430P140 Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK //
// Description: Output buffered MCLK, SMCLK and ACLK.
// ACLK = LFXT1 = 32768, MCLK = DCO Max, SMCLK = XT2
// //* XTAL's REQUIRED - NOT INSTALLED ON FET *//
// //* Min Vcc required varies with MCLK frequency - refer to datasheet *// //
// MSP430F149 // ----------------- // /|\\| XIN|- // | | | 32k
// --|RST XOUT|- // | | // | XT2IN|-
// | | XTAL (455k - 8Mhz) // |RST XT2OUT|- // | |
// | P5.4|-->MCLK = DCO Max // | P5.5|-->SMCLK = XT2 // | P5.6|-->ACLK = 32kHz //
// M. Buccini
// Texas Instruments Inc. // Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
9
#include
void main(void) {
BoardConfig(0xb8);
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer DCOCTL = DCO0 + DCO1 + DCO2; // Max DCO
BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on, max RSEL BCSCTL2 |= SELS; // SMCLK = XT2 P5DIR |= 0x70; // P5.6,5,4 outputs P5SEL |= 0x70; // P5.6,5,5 options
while(1) { } } //****************************************************************************** // MSP-FET430P140 Demo - Basic Clock, LPM3 Using WDT ISR, 32kHz ACLK //
// Description: This program operates MSP430 normally in LPM3, pulsing P3.4 // at 4 second intervals. WDT ISR used to wake-up system. All I/O configured // as low outputs to eliminate floating inputs. Current consumption does // increase when LED is powered on P3.4. Demo for measuring LPM3 current. // ACLK= LFXT1/4= 32768/4, MCLK= SMCLK= default DCO // //* External watch crystal on XIN XOUT is required for ACLK *// // //
// MSP430F149 // ---------------
// /|\\| XIN|-
// | | | 32kHz // --|RST XOUT|- // | | // | P3.5|-->LED //
// Dasheng
// LiTian Electronic Inc. // Feb 2008
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include
10