Sa We schrieb:
> das msp430 MCU development tool
Das heißt nicht so, das ist das eZ430-F2013.
(Auch ganz nett, aber schaff' Dir ein Launchpad an, das bietet mehr
Möglichkeiten und ist vor allem im Vergleich zum eZ430 spottbillig)
Auf dem mitgelieferten Target Board für den 'F2013 ist eine LED an P1.0
angeschlossen, weitere Peripherie gibts nicht.
Das Problem ist Dein Programm, Du schaltest P1OUT nur in eine Richtung,
nie aber zurück:
1 | while (1)
|
2 | {
|
3 | if (P1IN & PIN5) //Port1.5 abfragen ob 1
|
4 | {
|
5 | P1OUT = PIN0; //solange Port1.0 einschalten
|
6 | }
|
7 | }
|
Wenn Du willst, daß P1.0 dem Zustand von P1.5 folgt, musst Du das so
abändern:
1 | while (1)
|
2 | {
|
3 | if (P1IN & PIN5) // Port1.5 abfragen ob 1
|
4 | {
|
5 | P1OUT = PIN0; // solange Port1.0 einschalten
|
6 | }
|
7 | else
|
8 | {
|
9 | P1OUT = 0; // und sonst ausschalten
|
10 | }
|
11 | }
|
Jetzt hat die Angelegenheit noch ein Problem. Du beschreibst hier nicht
nur P1.0, sondern immer alle acht I/O-Pins von Port1. Das solltest Du
ändern; stell Dir vor, Du hättest an einem der anderen I/O-Pins noch
etwas anderes hängen, das Du nicht einschalten willst.
Und da kommen die Bitmanipulationsfunktionen von C ins Spiel:
1 | while (1)
|
2 | {
|
3 | if (P1IN & PIN5) // Port1.5 abfragen ob 1
|
4 | {
|
5 | P1OUT |= PIN0; // solange Port1.0 einschalten
|
6 | }
|
7 | else
|
8 | {
|
9 | P1OUT &= ~PIN0; // und sonst ausschalten
|
10 | }
|
11 | }
|
In Deinem C-Buch, das Du ja sicherlich nebenbei studieren wirst, steht
im Kapitel "Bitmanipulation", was dort geschieht.
Wenn Du tatsächlich kein C-Buch haben solltest, dann schaff Dir eins an.
Der Klassiker, Brian Kernighan & Dennis Ritchie, "Programmieren in C",
zweite Ausgabe, Hanser-Verlag, der sollte notfalls in jeder noch so
popligen Bibliothek zu finden sein.