1 #include "msp430g2553.h" 2 unsigned int rate = 0; 3 unsigned char updown = 1; 4 5 void main(void) { 6 7 WDTCTL = WDT_MDLY_32; 8 9 TACTL = TASSEL1 + TACLR; 10 TACTL |= MC0; 11 12 CCR0 = 20; // PWM周期 13 14 CCTL1 = OUTMOD_7; 15 CCR1 = 0; 16 17 P1DIR |= 0x40; // P1.6 输出 18 P1SEL |= 0x40; // P1.6 TA0 19 20 21 IE1 |= WDTIE; 22 _EINT(); 23 24 for (;;) { 25 _NOP(); 26 } 27 } 28 29 #pragma vector=WDT_VECTOR 30 __interrupt void interrupt_watchdog_timer(void) { 31 32 CCR1 = rate; 33 if (updown) { 34 rate += 1; 35 if (rate >= 20) 36 updown = 0; 37 } 38 else 39 { 40 rate -= 1; 41 if (rate <= 0) 42 updown = 1; 43 } 44 }