#include "io430.h" #include #include #define LED_R BIT3 unsigned int a = 50000; void main(void) { WDTCTL = WDTPW + WDTHOLD; P4DIR = P4DIR | 0x80; for (;;) { if (a > 0) { a = a - 1; } else { P4OUT = P4OUT ^ 0x80; a = rand() % 90000- 50000; } unsigned int i, n; P1DIR |= LED_R; // Pin von roter LED als Ausgang // Sekundäre Funktion aktivieren, hier Timerausgang => TA0.1 P1SEL |= LED_R; TA0CCR0 = 1000; // Endwert // Out-Modus auf Modus 7 stellen (R/S) TA0CCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2; TA0CTL = TASSEL1 + MC1; // Taktquelle, Zählmodus // Eigentliches Programm n = 0; while(1) // Endlosschleife { for (i = 0; i < 1500; i++); // Warteschleife n++; // Zählervariable erhöhen if (n == 1000) // Wenn n == 1000 => OUT-Modus ändern { n= 0; // n zurücksetzen TA0CCTL1 ^= OUTMOD2; // wechsel zwischen Mode 7 und Mode 3 } TA0CCR1= n; // TACCR1-Wert auf n setzen } } }