// Feb 2008
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BoardConfig(0xb8); //关闭数码管、流水灯和电平转换 P3DIR |= BIT4; // P3.4 output
CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) {
P3OUT ^= BIT4; // Toggle P3.4
CCR0 += 50000; // Add Offset to CCR0 }
//****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, CCR0 Up Mode ISR, DCO SMCLK //
// Description: Toggle P3.4 using software and TA_0 ISR. Timer_A is // configured for up mode, thus the timer overflows when TAR counts // to CCR0. In this example, CCR0 is loaded with 20000.
// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz //
// MSP430F149 // ---------------
// /|\\| XIN|- // | | | // --|RST XOUT|- // | |
// | P3.4|-->LED //
// Dasheng
// LiTian Electronic Inc. // Feb 2008
16
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include
WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);
P3DIR |= BIT4; // P3.4 output
CCTL0 = CCIE; // CCR0 interrupt enabled CCR0 = 20000;
TACTL = TASSEL_2 + MC_1; // SMCLK, upmode
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
// Timer A0 interrupt service routine #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) {
P3OUT ^= BIT4; // Toggle P3.4 }
//****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, DCO SMCLK //
// Description: Toggle P3.4 using software and Timer_A overflow ISR. // In this example an ISR triggers when TA overflows. Inside the TA // overflow ISR P3.4 is toggled. Toggle rate is approximatlely 12Hz. // Proper use of the TAIV interrupt vector generator is demonstrated. // ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz //
// MSP430F149 // ---------------
// /|\\| XIN|- // | | | // --|RST XOUT|- // | |
// | P3.4|-->LED //
// Dasheng
// LiTian Electronic Inc. // Feb 2008
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
17
#include
WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);
P3DIR |= BIT4; // P3.4 output
TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
// Timer_A3 Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) {
switch( TAIV ) {
case 2: break; // CCR1 not used case 4: break; // CCR2 not used case 10: P3OUT ^= BIT4; // overflow break; } }
//****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, 32kHz ACLK //
// Description: Toggle P3.4 using software and the Timer_A overflow ISR. // In this example an ISR triggers when TA overflows. Inside the ISR P3.4 // is toggled. Toggle rate is exactly 0.5Hz. Proper use of the TAIV interrupt // vector generator is demonstrated.
// ACLK = TACLK = 32768Hz, MCLK = SMCLK = default DCO ~800kHz // //* An external watch crystal on XIN XOUT is required for ACLK *// //
// MSP430F149 // ---------------
// /|\\| XIN|-
// | | | 32kHz // --|RST XOUT|- // | |
// | P3.4|-->LED //
// Dasheng
// LiTian Electronic Inc.
18
// Feb 2008
// Built with IAR Embedded Workbench Version: 3.42A
//******************************************************************************
#include
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT BoardConfig(0xb8);
P3DIR |= BIT4; // P3.4 output
TACTL = TASSEL_1 + MC_2 + TAIE; // ACLK, contmode, interrupt
_BIS_SR(LPM3_bits + GIE); // Enter LPM3 w/ interrupt }
// Timer_A3 Interrupt Vector (TAIV) handler #pragma vector=TIMERA1_VECTOR __interrupt void Timer_A(void) {
switch( TAIV ) {
case 2: break; // CCR1 not used case 4: break; // CCR2 not used case 10: P3OUT ^= BIT4; // overflow break; } }
#include
WDTCTL = WDTHOLD + WDTPW; // 关看门狗
BoardConfig(0xb0); //开流水灯,关数码管和电平转换 CACTL1 = CARSEL + CAREF0 + CAON ; // Vcc/4 = - cmp CACTL2 = P2CA0; // 使用 CA0 P2DIR = 0xff; P2OUT = 0xff;
while(1) {
19
if((CACTL2 | 0xfe) ==0xff)
{ // 比较电压是否超过0.25Vcc P2OUT &= ~BIT4;
CACTL1 &= 0xfe; // CAIFG = 0 } else {
P2OUT |= BIT4; } } }
//**************************************************************************** // MSP-FET430P140 Demo - Flash In-System Programming, Copy SegA to SegB //
// Description: This program first erases flash seg A, then it increments all // values in seg A, then it erases seg B, then copies seg A to seg B. // Assumed MCLK 550kHz - 900kHz.
// //* Set Breakpoint on NOP in the Mainloop to avoid Stressing Flash *// //
// MSP430F149 // -----------------
// /|\\| XIN|- // | | | // --|RST XOUT|- // | | //
// M. Mitchell
// Texas Instruments Inc. // Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include
uchar value; // 8-bit value to write to segment A uchar DataBuffer[128];
// Function prototypes
void write_SegA (uchar value); void copy_A2B (void);
void main(void)
20