Hallo,
ich versuche gerade ein kleines Programm zu schreiben.
Ziel ist es die LED anzuschalten, wenn der Button auf dem MSP430
gedrückt und gehalten wird. Sobald man den Button loslässt soll sie
wieder ausgehen.
Hier mal der Code:
1 | #include <msp430.h>
|
2 |
|
3 | int main(void)
|
4 | {
|
5 | WDTCTL = WDTPW | WDTHOLD;
|
6 | PM5CTL0 &= ~LOCKLPM5;
|
7 |
|
8 | // turn off led on P1.0 at startup
|
9 | P1DIR |= BIT0;
|
10 | P1OUT &= ~BIT0;
|
11 |
|
12 | P1DIR &= ~BIT1; // P1.1 -> as input
|
13 | P1REN |= BIT1; // P1.1 -> enable resistor
|
14 | P1OUT &= ~BIT1; // P1.1 -> pull-down resistor
|
15 |
|
16 | while(1) {
|
17 | if ((P1IN & BIT1) == BIT1) { // when BIT1 is set turn LED on
|
18 | P1OUT |= BIT0;
|
19 | } else {
|
20 | P1OUT &= ~BIT0;
|
21 | }
|
22 |
|
23 | __delay_cycles(1000);
|
24 | }
|
25 |
|
26 | return 0;
|
27 | }
|
Komischerweise ändert sich das Register P1IN nicht, egal ob der Button
gedrückt ist oder nicht. Dadurch bleibt natürlich auch die LED aus.
Kann mir jemand erklären, was ich hier falsch mache?
Gruß Stefan